@@ -84,14 +84,6 @@ End Canon_examples.
84
84
85
85
(* compatibility with older versions *)
86
86
87
- (* begin snippet canonS0 *)
88
-
89
- Definition canonS alpha (i:nat) : T1 := canon alpha (S i).
90
-
91
- Definition canon0 alpha : T1 := canon alpha 0.
92
-
93
- (* end snippet canonS0 *)
94
-
95
87
(** * Properties of canonical sequences *)
96
88
97
89
Lemma canon_zero i : canon zero i = zero.
@@ -227,13 +219,14 @@ Proof. (* .no-out *)
227
219
Qed .
228
220
229
221
230
- (** should be deprecated later *)
231
- Lemma canonS_succ i alpha : nf alpha -> canonS (succ alpha) i = alpha.
222
+
223
+ Lemma canonS_succ i alpha : nf alpha ->
224
+ canon (succ alpha) (S i) = alpha.
232
225
Proof .
233
226
intros; now apply canon_succ.
234
227
Qed .
235
228
236
- Lemma canon0_succ alpha : nf alpha -> canon0 (succ alpha) = alpha.
229
+ Lemma canon0_succ alpha : nf alpha -> canon (succ alpha) 0 = alpha.
237
230
Proof .
238
231
intros; now apply canon_succ.
239
232
Qed .
@@ -683,7 +676,7 @@ Proof.
683
676
-- destruct s.
684
677
++ subst; assert (False) by (eapply not_LT_zero; eauto).
685
678
contradiction.
686
- ++ assert {i :nat | (beta1 t1< canonS lambda1 i )%t1}.
679
+ ++ assert {i :nat | (beta1 t1< canon lambda1 (S i) )%t1}.
687
680
{ apply Hrec.
688
681
apply head_LT_cons; auto with T1.
689
682
all: auto.
@@ -723,7 +716,7 @@ Proof.
723
716
}
724
717
{ eapply nf_inv1, Hlambda. }
725
718
726
- assert {i: nat | beta2 t1< (canonS (cons lambda1 0 zero) i )}%t1.
719
+ assert {i: nat | beta2 t1< (canon (cons lambda1 0 zero) (S i) )}%t1.
727
720
{ apply Hrec.
728
721
-- apply LT3;auto with arith.
729
722
-- cbn; destruct lambda1.
@@ -741,7 +734,7 @@ Proof.
741
734
}
742
735
subst;
743
736
assert
744
- ({i: nat | beta2 t1< (canonS (cons lambda1 0 zero) i )})%t1.
737
+ ({i: nat | beta2 t1< (canon (cons lambda1 0 zero) (S i) )})%t1.
745
738
{ apply Hrec.
746
739
- apply LT3;auto with arith.
747
740
- cbn; destruct lambda1.
@@ -802,7 +795,7 @@ Proof.
802
795
apply nf_helper_intro with n; eauto with T1.
803
796
}
804
797
all: auto.
805
- -- subst; assert ({i: nat | beta2 t1< (canonS lambda2 i )})%t1.
798
+ -- subst; assert ({i: nat | beta2 t1< (canon lambda2 (S i) )})%t1.
806
799
{ apply Hrec.
807
800
{ apply tail_LT_cons; auto. }
808
801
1,2: eauto with T1.
@@ -840,7 +833,7 @@ Defined.
840
833
(* begin snippet canonSLimitLub *)
841
834
842
835
Lemma canonS_limit_lub (lambda : T1) :
843
- nf lambda -> T1limit lambda -> strict_lub (canonS lambda) lambda. (* .no-out *) (*| .. coq:: none | *)
836
+ nf lambda -> T1limit lambda -> strict_lub (fun i => canon lambda( S i) ) lambda. (* .no-out *) (*| .. coq:: none | *)
844
837
Proof .
845
838
split.
846
839
- intros; split.
@@ -859,7 +852,7 @@ Proof.
859
852
destruct (canonS_limit_strong H H0 H2).
860
853
specialize (Hl' x).
861
854
assert (l' t1< l')%t1.
862
- { apply LT_LE_trans with (canonS lambda x ); auto. }
855
+ { apply LT_LE_trans with (canon lambda (S x) ); auto. }
863
856
now destruct (@LT_irrefl l' ).
864
857
Qed .
865
858
(*|| *)
955
948
956
949
Lemma canonS_limit_mono alpha i j : nf alpha -> T1limit alpha ->
957
950
i < j ->
958
- canonS alpha i t1< canonS alpha j .
951
+ canon alpha (S i) t1< canon alpha (S j) .
959
952
Proof .
960
- intros; unfold canonS; eapply canon_limit_mono; eauto.
953
+ intros; eapply canon_limit_mono; eauto.
961
954
auto with arith.
962
955
Qed .
963
956
@@ -986,7 +979,7 @@ Fixpoint approx alpha beta fuel i :=
986
979
match fuel with
987
980
FO => None
988
981
| Fuel.FS f =>
989
- let gamma := canonS alpha i in
982
+ let gamma := canon alpha (S i) in
990
983
if decide (lt beta gamma)
991
984
then Some (i,gamma)
992
985
else approx alpha beta (f tt) (S i)
@@ -995,12 +988,12 @@ Fixpoint approx alpha beta fuel i :=
995
988
996
989
Lemma approx_ok alpha beta :
997
990
forall fuel i j gamma, approx alpha beta fuel i = Some (j,gamma) ->
998
- gamma = canonS alpha j /\ lt beta gamma.
991
+ gamma = canon alpha (S j) /\ lt beta gamma.
999
992
Proof .
1000
993
induction fuel as [| f IHfuel ].
1001
994
- cbn; discriminate.
1002
995
- intros i j gamma H0; cbn in H0.
1003
- destruct (decide (lt beta (canonS alpha i ))) as [H1|H1].
996
+ destruct (decide (lt beta (canon alpha (S i) ))) as [H1|H1].
1004
997
+ injection H0; intros; subst; split;auto.
1005
998
+ now specialize (IHfuel tt (S i) _ _ H0).
1006
999
Qed .
@@ -1020,16 +1013,9 @@ Next Obligation.
1020
1013
apply nf_canon; destruct alpha;auto.
1021
1014
Defined .
1022
1015
1023
- (** This is a helper which should be deprecated later :
1024
- [CanonS alpha i] should be replaced by [Canon alpha (S i)] *)
1025
-
1026
-
1027
- Notation CanonS alpha i := (Canon alpha (S i)).
1028
- Notation Canon0 alpha := (Canon alpha 0).
1029
-
1030
1016
Lemma Canon_Succ beta n: Canon (E0_succ beta) (S n) = beta.
1031
1017
Proof .
1032
- destruct beta. simpl. unfold CanonS, E0_succ. simpl.
1018
+ destruct beta. simpl. unfold E0_succ. simpl.
1033
1019
apply E0_eq_intro. simpl.
1034
1020
now rewrite (canon_succ).
1035
1021
Qed .
@@ -1043,12 +1029,12 @@ Qed.
1043
1029
1044
1030
Lemma CanonSSn (i:nat) :
1045
1031
forall alpha n , alpha <> E0zero ->
1046
- CanonS (Cons alpha (S n) E0zero) i =
1047
- Cons alpha n (CanonS (E0_phi0 alpha) i ).
1032
+ Canon (Cons alpha (S n) E0zero) (S i) =
1033
+ Cons alpha n (Canon (E0_phi0 alpha) (S i) ).
1048
1034
Proof .
1049
1035
intros; apply E0_eq_intro;
1050
- unfold CanonS ;repeat (rewrite cnf_rw || rewrite cnf_Cons); auto.
1051
- - unfold canonS; rewrite canon_SSn_zero; auto with E0.
1036
+ unfold Canon ;repeat (rewrite cnf_rw || rewrite cnf_Cons); auto.
1037
+ - rewrite canon_SSn_zero; auto with E0.
1052
1038
- unfold lt, E0_phi0; repeat rewrite cnf_rw.
1053
1039
apply canonS_LT ; trivial.
1054
1040
apply nf_phi0;auto with E0.
@@ -1058,20 +1044,21 @@ Proof.
1058
1044
Qed .
1059
1045
1060
1046
Lemma CanonS_phi0_lim alpha k : E0limit alpha ->
1061
- CanonS (E0_phi0 alpha) k =
1062
- E0_phi0 (CanonS alpha k ).
1047
+ Canon (E0_phi0 alpha) (S k) =
1048
+ E0_phi0 (Canon alpha (S k) ).
1063
1049
Proof .
1064
1050
intro; orefl; rewrite cnf_phi0.
1065
- unfold CanonS, canonS ; repeat rewrite cnf_rw; rewrite <- canonS_lim1.
1051
+ unfold Canon ; repeat rewrite cnf_rw; rewrite <- canonS_lim1.
1066
1052
- now rewrite cnf_phi0.
1067
1053
- apply cnf_ok.
1068
1054
- destruct alpha; cbn; assumption.
1069
1055
Qed .
1070
1056
1071
1057
1072
- Lemma CanonS_lt : forall i alpha, alpha <> E0zero -> CanonS alpha i o< alpha.
1058
+ Lemma CanonS_lt : forall i alpha, alpha <> E0zero ->
1059
+ Canon alpha (S i) o< alpha.
1073
1060
Proof .
1074
- destruct alpha. unfold E0lt, CanonS . cbn.
1061
+ destruct alpha. unfold E0lt. cbn.
1075
1062
intro;apply canonS_LT; auto.
1076
1063
intro H0; subst. apply H. unfold E0zero; f_equal.
1077
1064
apply nf_proof_unicity.
@@ -1091,17 +1078,17 @@ Qed.
1091
1078
Lemma Canon_of_limit_not_null : forall i alpha, E0limit alpha ->
1092
1079
Canon alpha (S i) <> E0zero.
1093
1080
Proof .
1094
- destruct alpha;simpl;unfold CanonS ; simpl; rewrite E0_eq_iff.
1081
+ destruct alpha;simpl; unfold Canon ; simpl; rewrite E0_eq_iff.
1095
1082
simpl; apply T1limit_canonS_not_zero; auto.
1096
1083
Qed .
1097
1084
1098
1085
#[global]
1099
1086
Hint Resolve CanonS_lt Canon_lt Canon_of_limit_not_null : E0.
1100
1087
1101
- Lemma CanonS_phi0_Succ alpha i : CanonS (E0_phi0 (E0_succ alpha)) i =
1088
+ Lemma CanonS_phi0_Succ alpha i : Canon (E0_phi0 (E0_succ alpha)) (S i) =
1102
1089
Omega_term alpha i.
1103
1090
Proof .
1104
- apply E0_eq_intro; unfold Omega_term, CanonS, E0_phi0, E0_succ, canonS .
1091
+ apply E0_eq_intro; unfold Omega_term, E0_phi0, E0_succ.
1105
1092
simpl cnf; rewrite pred_of_succ; case_eq (succ (cnf alpha)).
1106
1093
- intro H; destruct (succ_not_zero _ H); auto.
1107
1094
- reflexivity.
0 commit comments