225225
226226opaque symbol β‘β βΈ¬ [a ] [x :Ο a ] [l ] : Ο (β‘ β x βΈ¬ l ) β
227227begin
228- assume a x l h ; /*FIXME :apply βΈ¬β β‘ fails */ refine @βΈ¬β β‘ a x l _;
229- symmetry ; apply h
228+ assume a x l h ; refine @βΈ¬β β‘ a x l _; symmetry ; apply h
230229end ;
231230
232231// head
@@ -270,12 +269,9 @@ begin
270269 { assume x l h ; induction
271270 { simplify ; assume c ; refine β₯β c ; }
272271 { simplify ; assume y m i c ;
273- //FIXME : apply feq2 (βΈ¬) fails
274- refine feq2 (βΈ¬) _ _
275- { apply beq_correct ; //FIXME : apply and ββ c fails
276- apply @and ββ (beq x y ) (eql beq l m ) c }
277- { apply h ; //FIXME : apply and ββ c fails
278- refine @and ββ (beq x y ) (eql beq l m ) c
272+ apply feq2 (βΈ¬) _ _
273+ { apply beq_correct ; apply @and ββ _ (eql beq l m ) c }
274+ { apply h ; refine @and ββ (beq x y ) _ c
279275 }
280276 }
281277 }
@@ -284,17 +280,15 @@ end;
284280opaque symbol eql_complete a beq : Ο(`β x :Ο a , `β y , x = y β istrue (beq x y )) β
285281 Ο(`β l , `β m , l = m β istrue (eql beq l m )) β
286282begin
287- simplify ; //FIXME : remove
288283 assume a beq beq_complete ; induction
289284 { assume m i ; rewrite left i ; apply β€α΅’; }
290- { simplify /* FIXME */; assume x l h ; induction
285+ { assume x l h ; induction
291286 { assume j ; apply βΈ¬β β‘ j ; }
292287 { assume y m i j ; simplify ;
293288 have j ': Ο(x = y β§ l = m ) { apply βΈ¬_inj j };
294- apply @istrue_and (beq x y ) (eql beq l m ) /* FIXME */ ; apply β§α΅’
289+ apply @istrue_and (beq x y ) (eql beq l m ); apply β§α΅’
295290 { apply beq_complete x y ; apply β§ββ j ' }
296- { //FIXME : apply h fails
297- refine h m _; apply β§ββ j ' }
291+ { apply h m ; apply β§ββ j ' }
298292 }
299293 }
300294end ;
@@ -457,15 +451,9 @@ opaque symbol rev_idem [a] (l :π a) : Ο(rev (rev l) = l) β
457451begin
458452 assume a ; induction
459453 { reflexivity }
460- { assume x l h ;
461- /*FIXME : if no rule rev_concat , rewrite rev_concat fails :
462- Uncaught [File "src/handle/rewrite.ml" , line 166
463- rewrite @rev_concat a ;*/
464- simplify ; rewrite h ; reflexivity }
454+ { assume x l h ; simplify ; rewrite h ; reflexivity }
465455end ;
466456
467- //rule rev (rev $l ) βͺ $l ; creates confluence problems
468-
469457opaque symbol size_rev [a ] (l : π a ) : Ο(size (rev l ) = size l ) β
470458begin
471459 assume a ;
@@ -476,8 +464,6 @@ begin
476464 { assume x l h ; simplify ; rewrite h ; reflexivity ; }
477465end ;
478466
479- //rule size (rev $l ) βͺ size $l ; // confluence modulo C
480-
481467// rcons
482468
483469symbol rcons [a ] : π a β Ο a β π a ;
@@ -756,8 +742,6 @@ begin
756742 { assume e l h ; simplify ; apply h ; }
757743end ;
758744
759- //rule drop (size $l ) $l βͺ β‘;
760-
761745opaque symbol drop_cons [a ] (e :Ο a ) l n : Ο (drop (n +1 ) (e βΈ¬ l ) = drop n l ) β
762746begin
763747 assume a e l n ; reflexivity ;
@@ -992,10 +976,7 @@ end;
992976
993977opaque symbol rot_size [a ] (l :π a ) : Ο (rot (size l ) l = l ) β
994978begin
995- assume a l ; simplify ; rewrite take_size l ;
996- /*FIXME : Uncaught [File "src/core/infer.ml" , line 101
997- rewrite @drop_size ;*/
998- rewrite @drop_size a ; reflexivity ;
979+ assume a l ; simplify ; rewrite take_size l ; rewrite @drop_size a ; reflexivity ;
999980end ;
1000981
1001982opaque symbol rot_size_cat [a ] (l1 l2 :π a ) :
@@ -1035,8 +1016,7 @@ end;
10351016
10361017opaque symbol rotr0 [a ] (l :π a ) : Ο (rotr 0 l = l ) β
10371018begin
1038- assume a l ; simplify ; rewrite take_size l ; rewrite @drop_size a ; //FIXME
1039- reflexivity ;
1019+ assume a l ; simplify ; rewrite take_size l ; rewrite @drop_size a ; reflexivity ;
10401020end ;
10411021
10421022opaque symbol rotK [a ] n (l :π a ) : Ο (rot n (rotr n l ) = l ) β
0 commit comments