@@ -22,7 +22,7 @@ import Prelude.Uninhabited
2222%name Nat k,j,i,n,m
2323
2424instance Uninhabited (Z = S n) where
25− uninhabited refl impossible
25+ uninhabited Refl impossible
2626
2727--------------------------------------------------------------------------------
2828-- Syntactic tests
@@ -94,9 +94,9 @@ hyper (S pn) a (S pb) = hyper pn a (hyper (S pn) a pb)
9494||| @ m the larger number
9595data LTE : (n, m : Nat) -> Type where
9696 ||| Zero is the smallest Nat
97− lteZero : LTE Z right
97+ LTEZero : LTE Z right
9898 ||| If n <= m, then n + 1 <= m + 1
99− lteSucc : LTE left right -> LTE (S left) (S right)
99+ LTESucc : LTE left right -> LTE (S left) (S right)
100100
101101||| Greater than or equal to
102102total GTE : Nat -> Nat -> Type
@@ -112,18 +112,18 @@ GT left right = LT right left
112112
113113||| A successor is never less than or equal zero
114114succNotLTEzero : Not (S m `LTE` Z)
115−succNotLTEzero lteZero impossible
115+succNotLTEzero LTEZero impossible
116116
117117||| If two numbers are ordered, their predecessors are too
118118fromLteSucc : (S m `LTE` S n) -> (m `LTE` n)
119−fromLteSucc (lteSucc x) = x
119+fromLteSucc (LTESucc x) = x
120120
121121||| A decision procedure for `LTE`
122122isLTE : (m, n : Nat) -> Dec (m `LTE` n)
123−isLTE Z n = Yes lteZero
123+isLTE Z n = Yes LTEZero
124124isLTE (S k) Z = No succNotLTEzero
125125isLTE (S k) (S j) with (isLTE k j)
126− isLTE (S k) (S j) | (Yes prf) = Yes (lteSucc prf)
126+ isLTE (S k) (S j) | (Yes prf) = Yes (LTESucc prf)
127127 isLTE (S k) (S j) | (No contra) = No (contra . fromLteSucc)
128128
129129||| Boolean test than one Nat is less than or equal to another
@@ -329,18 +329,18 @@ lcm x y = divNat (x * y) (gcd x y)
329329-- An informative comparison view
330330--------------------------------------------------------------------------------
331331data CmpNat : Nat -> Nat -> Type where
332− cmpLT : (y : _) -> CmpNat x (x + S y)
333− cmpEQ : CmpNat x x
334− cmpGT : (x : _) -> CmpNat (y + S x) y
332+ CmpLT : (y : _) -> CmpNat x (x + S y)
333+ CmpEQ : CmpNat x x
334+ CmpGT : (x : _) -> CmpNat (y + S x) y
335335
336336total cmp : (x, y : Nat) -> CmpNat x y
337−cmp Z Z = cmpEQ
338−cmp Z (S k) = cmpLT _
339−cmp (S k) Z = cmpGT _
337+cmp Z Z = CmpEQ
338+cmp Z (S k) = CmpLT _
339+cmp (S k) Z = CmpGT _
340340cmp (S x) (S y) with (cmp x y)
341− cmp (S x) (S (x + (S k))) | cmpLT k = cmpLT k
342− cmp (S x) (S x) | cmpEQ = cmpEQ
343− cmp (S (y + (S k))) (S y) | cmpGT k = cmpGT k
341+ cmp (S x) (S (x + (S k))) | CmpLT k = CmpLT k
342+ cmp (S x) (S x) | CmpEQ = CmpEQ
343+ cmp (S (y + (S k))) (S y) | CmpGT k = CmpGT k
344344
345345--------------------------------------------------------------------------------
346346-- Properties
@@ -351,26 +351,26 @@ cmp (S x) (S y) with (cmp x y)
351351||| S preserves equality
352352total eqSucc : (left : Nat) -> (right : Nat) -> (p : left = right) ->
353353 S left = S right
354−eqSucc left _ refl = refl
354+eqSucc left _ Refl = Refl
355355
356356||| S is injective
357357total succInjective : (left : Nat) -> (right : Nat) -> (p : S left = S right) ->
358358 left = right
359−succInjective left _ refl = refl
359+succInjective left _ Refl = Refl
360360
361361-- Plus
362362total plusZeroLeftNeutral : (right : Nat) -> 0 + right = right
363−plusZeroLeftNeutral right = refl
363+plusZeroLeftNeutral right = Refl
364364
365365total plusZeroRightNeutral : (left : Nat) -> left + 0 = left
366−plusZeroRightNeutral Z = refl
366+plusZeroRightNeutral Z = Refl
367367plusZeroRightNeutral (S n) =
368368 let inductiveHypothesis = plusZeroRightNeutral n in
369369 ?plusZeroRightNeutralStepCase
370370
371371total plusSuccRightSucc : (left : Nat) -> (right : Nat) ->
372372 S (left + right) = left + (S right)
373−plusSuccRightSucc Z right = refl
373+plusSuccRightSucc Z right = Refl
374374plusSuccRightSucc (S left) right =
375375 let inductiveHypothesis = plusSuccRightSucc left right in
376376 ?plusSuccRightSuccStepCase
@@ -384,21 +384,21 @@ plusCommutative (S left) right =
384384
385385total plusAssociative : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
386386 left + (centre + right) = (left + centre) + right
387−plusAssociative Z centre right = refl
387+plusAssociative Z centre right = Refl
388388plusAssociative (S left) centre right =
389389 let inductiveHypothesis = plusAssociative left centre right in
390390 ?plusAssociativeStepCase
391391
392392total plusConstantRight : (left : Nat) -> (right : Nat) -> (c : Nat) ->
393393 (p : left = right) -> left + c = right + c
394−plusConstantRight left _ c refl = refl
394+plusConstantRight left _ c Refl = Refl
395395
396396total plusConstantLeft : (left : Nat) -> (right : Nat) -> (c : Nat) ->
397397 (p : left = right) -> c + left = c + right
398−plusConstantLeft left _ c refl = refl
398+plusConstantLeft left _ c Refl = Refl
399399
400400total plusOneSucc : (right : Nat) -> 1 + right = S right
401−plusOneSucc n = refl
401+plusOneSucc n = Refl
402402
403403total plusLeftCancel : (left : Nat) -> (right : Nat) -> (right' : Nat) ->
404404 (p : left + right = left + right') -> right = right'
@@ -423,24 +423,24 @@ plusLeftLeftRightZero (S left) right p =
423423
424424-- Mult
425425total multZeroLeftZero : (right : Nat) -> Z * right = Z
426−multZeroLeftZero right = refl
426+multZeroLeftZero right = Refl
427427
428428total multZeroRightZero : (left : Nat) -> left * Z = Z
429−multZeroRightZero Z = refl
429+multZeroRightZero Z = Refl
430430multZeroRightZero (S left) =
431431 let inductiveHypothesis = multZeroRightZero left in
432432 ?multZeroRightZeroStepCase
433433
434434total multRightSuccPlus : (left : Nat) -> (right : Nat) ->
435435 left * (S right) = left + (left * right)
436−multRightSuccPlus Z right = refl
436+multRightSuccPlus Z right = Refl
437437multRightSuccPlus (S left) right =
438438 let inductiveHypothesis = multRightSuccPlus left right in
439439 ?multRightSuccPlusStepCase
440440
441441total multLeftSuccPlus : (left : Nat) -> (right : Nat) ->
442442 (S left) * right = right + (left * right)
443−multLeftSuccPlus left right = refl
443+multLeftSuccPlus left right = Refl
444444
445445total multCommutative : (left : Nat) -> (right : Nat) ->
446446 left * right = right * left
@@ -451,33 +451,33 @@ multCommutative (S left) right =
451451
452452total multDistributesOverPlusRight : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
453453 left * (centre + right) = (left * centre) + (left * right)
454−multDistributesOverPlusRight Z centre right = refl
454+multDistributesOverPlusRight Z centre right = Refl
455455multDistributesOverPlusRight (S left) centre right =
456456 let inductiveHypothesis = multDistributesOverPlusRight left centre right in
457457 ?multDistributesOverPlusRightStepCase
458458
459459total multDistributesOverPlusLeft : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
460460 (left + centre) * right = (left * right) + (centre * right)
461−multDistributesOverPlusLeft Z centre right = refl
461+multDistributesOverPlusLeft Z centre right = Refl
462462multDistributesOverPlusLeft (S left) centre right =
463463 let inductiveHypothesis = multDistributesOverPlusLeft left centre right in
464464 ?multDistributesOverPlusLeftStepCase
465465
466466total multAssociative : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
467467 left * (centre * right) = (left * centre) * right
468−multAssociative Z centre right = refl
468+multAssociative Z centre right = Refl
469469multAssociative (S left) centre right =
470470 let inductiveHypothesis = multAssociative left centre right in
471471 ?multAssociativeStepCase
472472
473473total multOneLeftNeutral : (right : Nat) -> 1 * right = right
474−multOneLeftNeutral Z = refl
474+multOneLeftNeutral Z = Refl
475475multOneLeftNeutral (S right) =
476476 let inductiveHypothesis = multOneLeftNeutral right in
477477 ?multOneLeftNeutralStepCase
478478
479479total multOneRightNeutral : (left : Nat) -> left * 1 = left
480−multOneRightNeutral Z = refl
480+multOneRightNeutral Z = Refl
481481multOneRightNeutral (S left) =
482482 let inductiveHypothesis = multOneRightNeutral left in
483483 ?multOneRightNeutralStepCase
@@ -485,53 +485,53 @@ multOneRightNeutral (S left) =
485485-- Minus
486486total minusSuccSucc : (left : Nat) -> (right : Nat) ->
487487 (S left) - (S right) = left - right
488−minusSuccSucc left right = refl
488+minusSuccSucc left right = Refl
489489
490490total minusZeroLeft : (right : Nat) -> 0 - right = Z
491−minusZeroLeft right = refl
491+minusZeroLeft right = Refl
492492
493493total minusZeroRight : (left : Nat) -> left - 0 = left
494−minusZeroRight Z = refl
495−minusZeroRight (S left) = refl
494+minusZeroRight Z = Refl
495+minusZeroRight (S left) = Refl
496496
497497total minusZeroN : (n : Nat) -> Z = n - n
498−minusZeroN Z = refl
498+minusZeroN Z = Refl
499499minusZeroN (S n) = minusZeroN n
500500
501501total minusOneSuccN : (n : Nat) -> S Z = (S n) - n
502−minusOneSuccN Z = refl
502+minusOneSuccN Z = Refl
503503minusOneSuccN (S n) = minusOneSuccN n
504504
505505total minusSuccOne : (n : Nat) -> S n - 1 = n
506−minusSuccOne Z = refl
507−minusSuccOne (S n) = refl
506+minusSuccOne Z = Refl
507+minusSuccOne (S n) = Refl
508508
509509total minusPlusZero : (n : Nat) -> (m : Nat) -> n - (n + m) = Z
510−minusPlusZero Z m = refl
510+minusPlusZero Z m = Refl
511511minusPlusZero (S n) m = minusPlusZero n m
512512
513513total minusMinusMinusPlus : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
514514 left - centre - right = left - (centre + right)
515−minusMinusMinusPlus Z Z right = refl
516−minusMinusMinusPlus (S left) Z right = refl
517−minusMinusMinusPlus Z (S centre) right = refl
515+minusMinusMinusPlus Z Z right = Refl
516+minusMinusMinusPlus (S left) Z right = Refl
517+minusMinusMinusPlus Z (S centre) right = Refl
518518minusMinusMinusPlus (S left) (S centre) right =
519519 let inductiveHypothesis = minusMinusMinusPlus left centre right in
520520 ?minusMinusMinusPlusStepCase
521521
522522total plusMinusLeftCancel : (left : Nat) -> (right : Nat) -> (right' : Nat) ->
523523 (left + right) - (left + right') = right - right'
524−plusMinusLeftCancel Z right right' = refl
524+plusMinusLeftCancel Z right right' = Refl
525525plusMinusLeftCancel (S left) right right' =
526526 let inductiveHypothesis = plusMinusLeftCancel left right right' in
527527 ?plusMinusLeftCancelStepCase
528528
529529total multDistributesOverMinusLeft : (left : Nat) -> (centre : Nat) -> (right : Nat) ->
530530 (left - centre) * right = (left * right) - (centre * right)
531−multDistributesOverMinusLeft Z Z right = refl
531+multDistributesOverMinusLeft Z Z right = Refl
532532multDistributesOverMinusLeft (S left) Z right =
533533 ?multDistributesOverMinusLeftBaseCase
534−multDistributesOverMinusLeft Z (S centre) right = refl
534+multDistributesOverMinusLeft Z (S centre) right = Refl
535535multDistributesOverMinusLeft (S left) (S centre) right =
536536 let inductiveHypothesis = multDistributesOverMinusLeft left centre right in
537537 ?multDistributesOverMinusLeftStepCase
@@ -544,7 +544,7 @@ multDistributesOverMinusRight left centre right =
544544-- Power
545545total powerSuccPowerLeft : (base : Nat) -> (exp : Nat) -> power base (S exp) =
546546 base * (power base exp)
547−powerSuccPowerLeft base exp = refl
547+powerSuccPowerLeft base exp = Refl
548548
549549total multPowerPowerPlus : (base : Nat) -> (exp : Nat) -> (exp' : Nat) ->
550550 (power base exp) * (power base exp') = power base (exp + exp')
@@ -554,22 +554,22 @@ multPowerPowerPlus base (S exp) exp' =
554554 ?multPowerPowerPlusStepCase
555555
556556total powerZeroOne : (base : Nat) -> power base 0 = S Z
557−powerZeroOne base = refl
557+powerZeroOne base = Refl
558558
559559total powerOneNeutral : (base : Nat) -> power base 1 = base
560−powerOneNeutral Z = refl
560+powerOneNeutral Z = Refl
561561powerOneNeutral (S base) =
562562 let inductiveHypothesis = powerOneNeutral base in
563563 ?powerOneNeutralStepCase
564564
565565total powerOneSuccOne : (exp : Nat) -> power 1 exp = S Z
566−powerOneSuccOne Z = refl
566+powerOneSuccOne Z = Refl
567567powerOneSuccOne (S exp) =
568568 let inductiveHypothesis = powerOneSuccOne exp in
569569 ?powerOneSuccOneStepCase
570570
571571total powerSuccSuccMult : (base : Nat) -> power base 2 = mult base base
572−powerSuccSuccMult Z = refl
572+powerSuccSuccMult Z = Refl
573573powerSuccSuccMult (S base) =
574574 let inductiveHypothesis = powerSuccSuccMult base in
575575 ?powerSuccSuccMultStepCase
@@ -583,11 +583,11 @@ powerPowerMultPower base exp (S exp') =
583583
584584-- Pred
585585total predSucc : (n : Nat) -> pred (S n) = n
586−predSucc n = refl
586+predSucc n = Refl
587587
588588total minusSuccPred : (left : Nat) -> (right : Nat) ->
589589 left - (S right) = pred (left - right)
590−minusSuccPred Z right = refl
590+minusSuccPred Z right = Refl
591591minusSuccPred (S left) Z =
592592 let inductiveHypothesis = minusSuccPred left Z in
593593 ?minusSuccPredStepCase
@@ -598,125 +598,125 @@ minusSuccPred (S left) (S right) =
598598-- boolElim
599599total boolElimSuccSucc : (cond : Bool) -> (t : Nat) -> (f : Nat) ->
600600 S (boolElim cond t f) = boolElim cond (S t) (S f)
601−boolElimSuccSucc True t f = refl
602−boolElimSuccSucc False t f = refl
601+boolElimSuccSucc True t f = Refl
602+boolElimSuccSucc False t f = Refl
603603
604604total boolElimPlusPlusLeft : (cond : Bool) -> (left : Nat) -> (t : Nat) -> (f : Nat) ->
605605 left + (boolElim cond t f) = boolElim cond (left + t) (left + f)
606−boolElimPlusPlusLeft True left t f = refl
607−boolElimPlusPlusLeft False left t f = refl
606+boolElimPlusPlusLeft True left t f = Refl
607+boolElimPlusPlusLeft False left t f = Refl
608608
609609total boolElimPlusPlusRight : (cond : Bool) -> (right : Nat) -> (t : Nat) -> (f : Nat) ->
610610 (boolElim cond t f) + right = boolElim cond (t + right) (f + right)
611−boolElimPlusPlusRight True right t f = refl
612−boolElimPlusPlusRight False right t f = refl
611+boolElimPlusPlusRight True right t f = Refl
612+boolElimPlusPlusRight False right t f = Refl
613613
614614total boolElimMultMultLeft : (cond : Bool) -> (left : Nat) -> (t : Nat) -> (f : Nat) ->
615615 left * (boolElim cond t f) = boolElim cond (left * t) (left * f)
616−boolElimMultMultLeft True left t f = refl
617−boolElimMultMultLeft False left t f = refl
616+boolElimMultMultLeft True left t f = Refl
617+boolElimMultMultLeft False left t f = Refl
618618
619619total boolElimMultMultRight : (cond : Bool) -> (right : Nat) -> (t : Nat) -> (f : Nat) ->
620620 (boolElim cond t f) * right = boolElim cond (t * right) (f * right)
621−boolElimMultMultRight True right t f = refl
622−boolElimMultMultRight False right t f = refl
621+boolElimMultMultRight True right t f = Refl
622+boolElimMultMultRight False right t f = Refl
623623
624624-- Orders
625625total lteNTrue : (n : Nat) -> lte n n = True
626−lteNTrue Z = refl
626+lteNTrue Z = Refl
627627lteNTrue (S n) = lteNTrue n
628628
629−total lteSuccZeroFalse : (n : Nat) -> lte (S n) Z = False
630−lteSuccZeroFalse Z = refl
631−lteSuccZeroFalse (S n) = refl
629+total LTESuccZeroFalse : (n : Nat) -> lte (S n) Z = False
630+LTESuccZeroFalse Z = Refl
631+LTESuccZeroFalse (S n) = Refl
632632
633633-- Minimum and maximum
634634total maximumAssociative : (l,c,r : Nat) -> maximum l (maximum c r) = maximum (maximum l c) r
635−maximumAssociative Z c r = refl
636−maximumAssociative (S k) Z r = refl
637−maximumAssociative (S k) (S j) Z = refl
638−maximumAssociative (S k) (S j) (S i) = rewrite maximumAssociative k j i in refl
635+maximumAssociative Z c r = Refl
636+maximumAssociative (S k) Z r = Refl
637+maximumAssociative (S k) (S j) Z = Refl
638+maximumAssociative (S k) (S j) (S i) = rewrite maximumAssociative k j i in Refl
639639
640640total maximumCommutative : (l, r : Nat) -> maximum l r = maximum r l
641−maximumCommutative Z Z = refl
642−maximumCommutative Z (S k) = refl
643−maximumCommutative (S k) Z = refl
644−maximumCommutative (S k) (S j) = rewrite maximumCommutative k j in refl
641+maximumCommutative Z Z = Refl
642+maximumCommutative Z (S k) = Refl
643+maximumCommutative (S k) Z = Refl
644+maximumCommutative (S k) (S j) = rewrite maximumCommutative k j in Refl
645645
646646total maximumIdempotent : (n : Nat) -> maximum n n = n
647−maximumIdempotent Z = refl
647+maximumIdempotent Z = Refl
648648maximumIdempotent (S k) = cong (maximumIdempotent k)
649649
650650total minimumAssociative : (l,c,r : Nat) -> minimum l (minimum c r) = minimum (minimum l c) r
651−minimumAssociative Z c r = refl
652−minimumAssociative (S k) Z r = refl
653−minimumAssociative (S k) (S j) Z = refl
654−minimumAssociative (S k) (S j) (S i) = rewrite minimumAssociative k j i in refl
651+minimumAssociative Z c r = Refl
652+minimumAssociative (S k) Z r = Refl
653+minimumAssociative (S k) (S j) Z = Refl
654+minimumAssociative (S k) (S j) (S i) = rewrite minimumAssociative k j i in Refl
655655
656656total minimumCommutative : (l, r : Nat) -> minimum l r = minimum r l
657−minimumCommutative Z Z = refl
658−minimumCommutative Z (S k) = refl
659−minimumCommutative (S k) Z = refl
660−minimumCommutative (S k) (S j) = rewrite minimumCommutative k j in refl
657+minimumCommutative Z Z = Refl
658+minimumCommutative Z (S k) = Refl
659+minimumCommutative (S k) Z = Refl
660+minimumCommutative (S k) (S j) = rewrite minimumCommutative k j in Refl
661661
662662total minimumIdempotent : (n : Nat) -> minimum n n = n
663−minimumIdempotent Z = refl
663+minimumIdempotent Z = Refl
664664minimumIdempotent (S k) = cong (minimumIdempotent k)
665665
666666total minimumZeroZeroRight : (right : Nat) -> minimum 0 right = Z
667−minimumZeroZeroRight Z = refl
667+minimumZeroZeroRight Z = Refl
668668minimumZeroZeroRight (S right) = minimumZeroZeroRight right
669669
670670total minimumZeroZeroLeft : (left : Nat) -> minimum left 0 = Z
671−minimumZeroZeroLeft Z = refl
672−minimumZeroZeroLeft (S left) = refl
671+minimumZeroZeroLeft Z = Refl
672+minimumZeroZeroLeft (S left) = Refl
673673
674674total minimumSuccSucc : (left : Nat) -> (right : Nat) ->
675675 minimum (S left) (S right) = S (minimum left right)
676−minimumSuccSucc Z Z = refl
677−minimumSuccSucc (S left) Z = refl
678−minimumSuccSucc Z (S right) = refl
676+minimumSuccSucc Z Z = Refl
677+minimumSuccSucc (S left) Z = Refl
678+minimumSuccSucc Z (S right) = Refl
679679minimumSuccSucc (S left) (S right) =
680680 let inductiveHypothesis = minimumSuccSucc left right in
681681 ?minimumSuccSuccStepCase
682682
683683total maximumZeroNRight : (right : Nat) -> maximum Z right = right
684−maximumZeroNRight Z = refl
685−maximumZeroNRight (S right) = refl
684+maximumZeroNRight Z = Refl
685+maximumZeroNRight (S right) = Refl
686686
687687total maximumZeroNLeft : (left : Nat) -> maximum left Z = left
688−maximumZeroNLeft Z = refl
689−maximumZeroNLeft (S left) = refl
688+maximumZeroNLeft Z = Refl
689+maximumZeroNLeft (S left) = Refl
690690
691691total maximumSuccSucc : (left : Nat) -> (right : Nat) ->
692692 S (maximum left right) = maximum (S left) (S right)
693−maximumSuccSucc Z Z = refl
694−maximumSuccSucc (S left) Z = refl
695−maximumSuccSucc Z (S right) = refl
693+maximumSuccSucc Z Z = Refl
694+maximumSuccSucc (S left) Z = Refl
695+maximumSuccSucc Z (S right) = Refl
696696maximumSuccSucc (S left) (S right) =
697697 let inductiveHypothesis = maximumSuccSucc left right in
698698 ?maximumSuccSuccStepCase
699699
700700total sucMaxL : (l : Nat) -> maximum (S l) l = (S l)
701−sucMaxL Z = refl
701+sucMaxL Z = Refl
702702sucMaxL (S l) = cong (sucMaxL l)
703703
704704total sucMaxR : (l : Nat) -> maximum l (S l) = (S l)
705−sucMaxR Z = refl
705+sucMaxR Z = Refl
706706sucMaxR (S l) = cong (sucMaxR l)
707707
708708total sucMinL : (l : Nat) -> minimum (S l) l = l
709−sucMinL Z = refl
709+sucMinL Z = Refl
710710sucMinL (S l) = cong (sucMinL l)
711711
712712total sucMinR : (l : Nat) -> minimum l (S l) = l
713−sucMinR Z = refl
713+sucMinR Z = Refl
714714sucMinR (S l) = cong (sucMinR l)
715715
716716-- div and mod
717717total modZeroZero : (n : Nat) -> mod 0 n = Z
718−modZeroZero Z = refl
719−modZeroZero (S n) = refl
718+modZeroZero Z = Refl
719+modZeroZero (S n) = Refl
720720
721721--------------------------------------------------------------------------------
722722-- Proofs