Re: rigorous axiomatic geometry proof in HOL Light
Bill Richter <richter <at> math.northwestern.edu>
2012-06-05 03:54:33 GMT
John, I made big progress on our set theory problem! 700+ lines of
code below. I just reference `IN', the first definition in sets.ml
let IN = new_definition
`!P:A->bool. !x. x IN P <=> P x`;;
So I define `ray' as a curried function
let Ray_DEF = new_definition
`!A B X. ray (A,B) X <=> ~(A = B) /\ Collinear(A, B, X) /\ ~Between(X, A, B)`;;
and later I can write, as if a ray was a set,
G IN ray(O,D) [G_OD] by DnotO, ODGcol, -, IN, Ray_DEF;
I can then even ``intersect'' rays with other sets using INTER. I'm
really happy about this! It's not everything I wanted (yet), but it
should be all the set theory I need to code up my Hilbert paper.
--
best,
Bill
(*
Paste in these 2 commands: (setq case-fold-search nil)
cd ~/hol_light; ocaml
#use "hol.ml";;
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. *)
new_type("point",0);;
new_type_abbrev("line",`:point->bool`);;
new_constant("Between",`:point#point#point->bool`);;
new_constant("===",`:point#point->point#point->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. A IN l /\ B IN l /\ C IN l`;;
let Twiddle_DEF = new_definition
`Twiddle A l B <=>
~(?X. (X IN l) /\ Between(A, X, B))`;;
let same_side_DEF = new_definition
`A,B same_side l <=>
~(?X. (X IN l) /\ Between(A, X, B))`;;
let Reflexive_relation_DEF = new_definition
`Reflexive_Property <=>
!l:line A:point. ~(A IN l) ==> A,A same_side l`;;
let Symmetric_relation_DEF = new_definition
`Symmetric_Property <=>
!l:line A:point B:point. ~(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:line A:point B:point C:point.
~(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.
O IN a /\ A IN a /\ O IN b /\ B IN b /\
~(P IN a) /\ ~(P IN b) /\ P,B same_side a /\ P,A same_side b`;;
(* ------------------------------------------------------------------------- *)
(* The axioms. *)
(* ------------------------------------------------------------------------- *)
let I1 = new_axiom
`!A B. ~(A = B) ==> ?! l. A IN l /\ B IN l`;;
let I2 = new_axiom
`!l. ? A B. A IN l /\ B IN l /\ ~(A = B)`;;
let I3 = new_axiom
`?A:point B:point C:point. ~(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 B4 = new_axiom
`!l A B C. ~Collinear(A, B, C) ==>
!l. ~(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))`;;
#load "unix.cma";;
loadt "miz3/miz3.ml";;
horizon := 0;;
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 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 line;
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 -, Collinear_DEF;
F by -, useI3;
qed by -;
end`;;
let B4'_THM = thm `;
let l be line;
let A B C be point;
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 H1, B4;
qed by -, H1, H2, same_side_DEF`;;
let BetweenLinear_THM = thm `;
let A B C be point;
let m be line;
assume 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
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 line;
assume 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
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 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 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 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
O IN l /\ Q IN l by H1, I1;
Collinear (O,Q,O) by -, Collinear_DEF;
O IN ray(O,Q) by H1, -, OOQ, IN, Ray_DEF;
qed by -`;;
let Line01infinity_THM = thm `;
let X be point;
let l m be line;
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 -, H2, IN_INTER;
l = m by -, X1, I1;
F by -, H1;
qed by -`;;
let EquivIntersection_THM = thm `;
let A B X be point;
let l m be line;
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 -, same_side_DEF;
~(A = B) /\ Collinear(A, G, B) [X6] by -, B1;
consider k such that
A IN k /\ G IN k /\ B IN k [X7] by -, Collinear_DEF;
k = m by -, 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:line A:point. A,A same_side l
proof
let l be line;
let A be point;
~(?X. (X IN l) /\ Between(A, X, A)) by B1;
qed by -, same_side_DEF;
qed by -, Reflexive_relation_DEF`;;
let SameSideSymmetricRelation_THM = thm `;
thus Symmetric_Property
proof
!l:line A:point B:point. ~(A IN l) /\ ~(B IN l) ==>
A,B same_side l ==> B,A same_side l
proof
let l be line;
let A B be point;
assume A,B same_side l [H1];
assume ~(A IN l) /\ ~(B IN l);
~(?X. (X IN l) /\ Between(A, X, B)) by H1, same_side_DEF;
~(?X. (X IN l) /\ Between(B, X, A)) by -, B1;
qed by -, same_side_DEF;
qed by -, Symmetric_relation_DEF`;;
let SameSideTransitiveRelation_THM = thm `;
thus Transitive_Property
proof
!l:line A:point B:point C:point.
~(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 line;
let A B C be point;
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 -, H0, H1, H2, B4'_THM;
suppose Collinear(A, B, C) [Coll];
cases;
suppose A = B \/ A = C \/ B = C;
qed by -, H2, H0, SameSideReflexiveRelation_THM,
Reflexive_relation_DEF, H1;
suppose ~(A = B) /\ ~(A = C) /\ ~(B = C) [Distinct];
consider m such that
A IN m /\ C IN m [W1] by Distinct, I1;
~(l = m) [W2] by W1, 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 -, W1, BetweenLinear_THM;
~(X IN l) by -, Disjoint, DisjointOneNotOther_THM;
qed by -;
qed by -, 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 [U1] by -, IN_INTER;
l INTER m = {X} [U2] by W2, -, Line01infinity_THM;
consider E such that
E IN l /\ ~(E = X) [U3] by U1, I2;
~(E IN m) [U4] by U2, U3, IntersectionSingletonOneNotOther_THM;
~(E = B) by U3, H0;
consider B' such that
Between(E, B, B') by -, B2;
Between(B', B, E) [U5] by -, B1;
~(B' = E) /\ ~(B = E) /\ ~(B' = B) /\ Collinear(B', B, E) [U6] by -, B1;
consider n such that
E IN n /\ B' IN n [U7] by -, I1;
B IN n [U8] by U7, U5, BetweenLinear_THM;
~(l = n) [U9] by H0, -;
l INTER n = {E} [U10] by U9, U7, U3, Line01infinity_THM;
~(B' IN l) [U11] by -, U7, U6, IntersectionSingletonOneNotOther_THM;
~ Between(B, E, B') [U12] by U6, U5, B3;
B' IN n DELETE E /\ B IN n DELETE E by U7, U8, U6, IN_DELETE;
B, B' same_side l [U13] by U10, -, U12, EquivIntersection_THM;
~(m = n) [U14] by U7, U4;
B IN m by W1, Coll, Distinct, CollinearLinear_THM;
m INTER n = {B} [U15] by -, U8, U14, Line01infinity_THM;
~(A IN n) [U16] by -, W1, Distinct, IntersectionSingletonOneNotOther_THM;
~Collinear(A, B, B') by U6, U7, U8, I1, U16, Collinear_DEF;
A,B' same_side l [U17] by -, H0, U11, H1, U13, B4'_THM;
~(C IN n) [U18] by U15, W1, Distinct,
IntersectionSingletonOneNotOther_THM;
C,B same_side l [U19] by H0, H2, SameSideSymmetricRelation_THM,
Symmetric_relation_DEF;
~Collinear(C, B, B') by U6, U7, U8, I1, U18, Collinear_DEF;
C,B' same_side l by -, H0, U11, U19, U13, B4'_THM;
B',C same_side l [U20] by H0, U11, -, SameSideSymmetricRelation_THM,
Symmetric_relation_DEF;
~(B' IN m) [U21] by U15, U7, U6, IntersectionSingletonOneNotOther_THM;
~Collinear(A, B', C) by Distinct, W1, I1, U21, Collinear_DEF;
A, C same_side l by -, H0, U11, U17, U20, 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 O IN a /\ A IN a [aOA] by -, I1;
consider b such that O IN b /\ B IN b [bOB] by Distinct, I1;
consider l such that 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 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 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 line;
assume O IN a /\ A IN a /\ 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) /\
O IN alpha /\ A IN alpha /\ 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 O IN a /\ A IN a [a_OA] by Distinct, I1;
consider b such that 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 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 axb_intO, Pin_x_O, Xin_x_O, P_OX, EquivIntersection_THM;
~(P IN b) /\ P,X same_side b [Psim_bX] by 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 line;
assume ~(O = A) [H1];
assume 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 O IN p /\ P IN p [p_OP] by Distinct, I1;
consider q such that 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 -, 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 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
O IN a /\ A IN a [a_OA] by Distinct, I1;
consider b such that
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 DintAOB, notA'b, -, SameSideSymmetricRelation_THM, Symmetric_relation_DEF;
A',A same_side b by DintAOB, notA'b, notAb, -, SameSideTransitiveRelation_THM,
Transitive_relation_DEF;
A,A' same_side b by 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
O IN a /\ A IN a [a_OA] by Distinct, I1;
consider b such that
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
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 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 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 notBa, D_AOB, -, SameSideSymmetricRelation_THM, Symmetric_relation_DEF;
G,D same_side a [Gsim_aD] by 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`;;
(*
exec GOAL_TAC;
p();;
*)
let IntervalTransitivity_THM = thm `;
let O P Q R be point;
let m be line;
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 ExistsPointOffLine_THM;
~(O = E) by H1, notEm;
consider l such that
O IN l /\ E IN l [OE_l] by -, I1;
~(m = l) by notEm, OE_l;
l INTER m = {O} [ml_O] by -, 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 ml_O, H2, H3, PQRnotl, EquivIntersection_THM;
P,R same_side l [Psim_lR] by PQRnotl, Psim_lQsim_lR,
SameSideTransitiveRelation_THM, Transitive_relation_DEF;
qed by OE_l, -, same_side_DEF`;;
------------------------------------------------------------------------------
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/