Freek, I successfully ported my 120 line Mizar proof of Gupta's
theorem to miz3!  That's a tribute to miz3 and its error messages, as
I got a lot of them, and the errors showed me how to debug my code.

But the first error messages I got didn't help me at all, and the 2nd
one seems erroneous.  

I pasted in the following 120 line proof, and got only one error
message:
       Exception: Failure "term_of_now".

The problem was that on line 70, I had a 
     ~(e = c) [U1];
which should have read 
     ~(e = c) [U1]
as it is a statement I'm about to prove.

After a few fixes, I got the error 

       cases;
  ::        #1
  :: 1: inference error
       suppose ~(e = c);
         qed by -;
  ::             #9
  :: 9: syntax error mizar
       suppose e = c [U2]
         c' = e by U2, Z4, EquivSymmetric, A3;
  ::                                         #9

You can clearly see my error: 
suppose e = c [U2]
needs a ;
but nothing else here is wrong, and #1 and #9 are on different lines. 
 
After those two baffling error messages, the error messages got a lot
clearer, and I finished debugging it (correction in my earlier post).

let Gupta_THM = thm `;
   let a b c d be point;
   assume                                       ~(a = b)                [H1];
   assume                                       Between (a,b,c)         [H2];
   assume                                       Between (a,b,d)         [H3];
   thus Between (b,d,c) \/ Between (b,c,d)

   proof
     cases;
     suppose b = c \/ b = d \/ c = d;
       Between (b,d,c) \/ Between (b,c,d) by -, Baaq_THM, Bqaa_THM;
     end;
     suppose ~(b = c) /\ ~(b = d) /\ ~(c = d) [H4];
       assume   ~ Between (b,d,c) [H5];
       consider d' such that
       Between (a,c,d') /\ c,d' === c,d [X1] by A4;
       consider c' such that
       Between (a,d,c') /\ d,c' === c,d [X2] by A4;
       is_ordered (a,b,c,d') by H2, X1, B123and134Ordered_THM;
       Between (a,b,d') /\ Between (b,c,d') [X3] by -, is_ordered_DEF;
       is_ordered (a,b,d,c') by H3, X2, B123and134Ordered_THM;
       Between (a,b,c') /\ Between (b,d,c') [X4] by -, is_ordered_DEF;
       ~(c = d') [X5] by X1, H4, A3, EquivSymmetric;
       ~(d = c') [X6] by X2, H4, A3, EquivSymmetric;
       ~(b = d') [X7] by X3, H4, A6;
       ~(b = c') [X8] by X4, H4, A6;

     consider u such that
     Between (c,d',u) /\ d',u === b,d [Y1] by A4;
     is_ordered (b,c,d',u) by X5, X3, Y1 BTransitivityOrdered_THM;
     Between (b,c,u) /\  Between (b,d',u) [Y2] by -, is_ordered_DEF;
     consider b' such that
     Between (d,c',b') /\ c',b' === b,c [Y3] by A4;
     is_ordered (b,d,c',b') by X6 X4 Y3 BTransitivityOrdered_THM;
  
     Between (b,d,b') /\ Between (b,c',b') [Y4] by -, is_ordered_DEF;
     Between (c',d,b) [Y5] by X4, Bsymmetry_THM;
     d,c' === c',d /\ b,d === d,b [Y6] by A1;
     c,d === d,c' by X2, EquivSymmetric; 
     c,d' === d,c' by -, X1, EquivTransitive;
     c,d' === c',d [Y7] by -, Y6 EquivTransitive;
     d',u === d,b by Y1, Y6, EquivTransitive;
     c,u === c',b [Y8] by -, Y1, Y5, Y7, SegmentAddition_THM;
     c',b' === b',c' /\ b',b === b,b' [Y9] by A1;
     b,c  === c',b' by Y3 EquivSymmetric;
     b,c === b',c' [Y10] by -, Y9 EquivTransitive;
     Between (b',c',b) by Y4, Bsymmetry_THM;
     b,u === b',b by -, Y2, Y10, Y8, SegmentAddition_THM;
     b,u === b,b' [Y11] by -, Y9, EquivTransitive;
     is_ordered (a,b,d',u) [Y12] by X7, X3, Y2, BTransitivityOrdered_THM;
     is_ordered (a,b,c',b') by X8, X4, Y4, BTransitivityOrdered_THM;
     Between (a,b,u) /\ Between (a,b,b') by -, Y12, is_ordered_DEF;
     u = b' [Y13]  by -, H1, Y11, C1_THM;

     c',b === c,b' by Y13, Y8, EquivSymmetric;
     b,c' === b',c [Z1] by -, CongruenceDoubleSymmetry_THM;
     c,c' === c',c by A1;
     b,c,c' cong b',c',c [Z2] by -, Y10, Z1, cong_DEF;
     Between (b',c',d) by Y3, Bsymmetry_THM;
     c',d' === c,d [Z3] by -, H4, Z2, X3, Y7, A5;
     d',c' === c',d' by A1;
     d',c' === c,d by -, Z3, EquivTransitive;   

     consider e such that
     Between (c,e,c') /\ Between (d,e,d') /\ c,e === c',e /\ d,e === d',e
     [Z4] by -, X3, X4, X1, X2, RhombusDiagBisect_THM;

     ~(e = c) [U1];
     proof
     cases;
     suppose ~(e = c);
       qed by -;
     suppose e = c [U2]
       c' = e by U2, Z4, EquivSymmetric, A3;
       c' = c by -, U2;
       Between (b,d,c) [U3] by -, X4;
       F by -, U3, H5;
       qed by -;
     end;

     e = d [V1];
     proof
     cases;
     suppose e = d;
       qed by -;
     suppose ~(e = d) [V2];    
       consider p r q such that
       Between (p,r,q) /\ Between (r,c,d') /\ Between (e,c,p) /\
       r,c,p cong r,c,q /\ r,c === e,c /\ p,r === d,e [W1] 
       by X3, Z4, X1, H4, V2, FlatNormal;
       r,p === r,q /\ c,p === c,q [W2] by W1, cong_DEF;
       ~(c = r) by W1 U1 EquivSymmetric, A3;
       d',p === d',q [W3] by -, W1, W2, EqDist2PointsBetween_THM;

       Between (c,d',b') by Y1, Y13;
       b',p === b',q [W4] by -, X5, W2, W3, EqDist2PointsBetween_THM; 

       Between (d',c,b) by X3 Bsymmetry_THM;
       b,p === b,q [W5] by -, X5, W3, W2, EqDist2PointsBetween_THM;  

       c',p === c',q [W7]by Y4 W4 W5 EqDist2PointsInnerBetween_THM;  

       Between (c',e,c) by Z4, Bsymmetry_THM;
       is_ordered (c',e,c,p) by -, U1, W1, BTransitivityOrdered_THM;
       Between (c',c,p) [W8] by -, is_ordered_DEF;
       ~(c' = c) by Z4 U1 A6;
       p,p === p,q by -, W8, W7, W2, EqDist2PointsBetween;   

       q = p by EquivSymmetric, A3;
       p = r by -, W1 A6;
       e = d [W9] by -, W1 EquivSymmetric A3;
       F by -, W9, V2;
       qed by -;
     end;

     d' = e by V1, Z4, EquivSymmetric, A3;
     d' = d by -, V1;   thus
     Between (b,c,d) by X3;
   end;
 end`;;

------------------------------------------------------------------------------
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

Reply via email to