Skip to content

Commit c7c44dc

Browse files
authored
Canon deprecate (#174)
* buggy * minor change * Removed useless variants of functions canon and Canon
1 parent af30acc commit c7c44dc

File tree

10 files changed

+111
-130
lines changed

10 files changed

+111
-130
lines changed

doc/ks-chapter.tex

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,6 @@ \subsubsection{Canonical sequences in \coq}
132132
defined in ~\href{../theories/html/gaia_hydras.GCanon.html\#canon}{gaia\_hydras.GCanon} (please see Sect.~\ref{sect:gcanon}).
133133

134134
\index{gaiabridge}{Canonical sequences}
135-
\paragraph*{Remark}
136-
In the present state of this library, the following specializations of \texttt{canon} are still used in some proofs or lemma statements. They are planned to be deprecated.
137-
138-
\input{movies/snippets/Canon/CanonS0}
139-
140-
141135

142136

143137
For instance \coq's computing facilities allow us to verify the equalities\linebreak

theories/ordinals/Epsilon0/Canon.v

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,6 @@ End Canon_examples.
8484

8585
(* compatibility with older versions *)
8686

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-
9587
(** * Properties of canonical sequences *)
9688

9789
Lemma canon_zero i : canon zero i = zero.
@@ -227,13 +219,14 @@ Proof. (* .no-out *)
227219
Qed.
228220

229221

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.
232225
Proof.
233226
intros; now apply canon_succ.
234227
Qed.
235228

236-
Lemma canon0_succ alpha : nf alpha -> canon0 (succ alpha) = alpha.
229+
Lemma canon0_succ alpha : nf alpha -> canon (succ alpha) 0 = alpha.
237230
Proof.
238231
intros; now apply canon_succ.
239232
Qed.
@@ -683,7 +676,7 @@ Proof.
683676
-- destruct s.
684677
++ subst; assert (False) by (eapply not_LT_zero; eauto).
685678
contradiction.
686-
++ assert {i :nat | (beta1 t1< canonS lambda1 i)%t1}.
679+
++ assert {i :nat | (beta1 t1< canon lambda1 (S i))%t1}.
687680
{ apply Hrec.
688681
apply head_LT_cons; auto with T1.
689682
all: auto.
@@ -723,7 +716,7 @@ Proof.
723716
}
724717
{ eapply nf_inv1, Hlambda. }
725718

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.
727720
{ apply Hrec.
728721
-- apply LT3;auto with arith.
729722
-- cbn; destruct lambda1.
@@ -741,7 +734,7 @@ Proof.
741734
}
742735
subst;
743736
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.
745738
{ apply Hrec.
746739
- apply LT3;auto with arith.
747740
- cbn; destruct lambda1.
@@ -802,7 +795,7 @@ Proof.
802795
apply nf_helper_intro with n; eauto with T1.
803796
}
804797
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.
806799
{ apply Hrec.
807800
{ apply tail_LT_cons; auto. }
808801
1,2: eauto with T1.
@@ -840,7 +833,7 @@ Defined.
840833
(* begin snippet canonSLimitLub *)
841834

842835
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 |*)
844837
Proof.
845838
split.
846839
- intros; split.
@@ -859,7 +852,7 @@ Proof.
859852
destruct (canonS_limit_strong H H0 H2).
860853
specialize (Hl' x).
861854
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. }
863856
now destruct (@LT_irrefl l' ).
864857
Qed.
865858
(*||*)
@@ -955,9 +948,9 @@ Qed.
955948

956949
Lemma canonS_limit_mono alpha i j : nf alpha -> T1limit alpha ->
957950
i < j ->
958-
canonS alpha i t1< canonS alpha j.
951+
canon alpha (S i) t1< canon alpha (S j).
959952
Proof.
960-
intros; unfold canonS; eapply canon_limit_mono; eauto.
953+
intros; eapply canon_limit_mono; eauto.
961954
auto with arith.
962955
Qed.
963956

@@ -986,7 +979,7 @@ Fixpoint approx alpha beta fuel i :=
986979
match fuel with
987980
FO => None
988981
| Fuel.FS f =>
989-
let gamma := canonS alpha i in
982+
let gamma := canon alpha (S i) in
990983
if decide (lt beta gamma)
991984
then Some (i,gamma)
992985
else approx alpha beta (f tt) (S i)
@@ -995,12 +988,12 @@ Fixpoint approx alpha beta fuel i :=
995988

996989
Lemma approx_ok alpha beta :
997990
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.
999992
Proof.
1000993
induction fuel as [| f IHfuel ].
1001994
- cbn; discriminate.
1002995
- 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].
1004997
+ injection H0; intros; subst; split;auto.
1005998
+ now specialize (IHfuel tt (S i) _ _ H0).
1006999
Qed.
@@ -1020,16 +1013,9 @@ Next Obligation.
10201013
apply nf_canon; destruct alpha;auto.
10211014
Defined.
10221015

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-
10301016
Lemma Canon_Succ beta n: Canon (E0_succ beta) (S n) = beta.
10311017
Proof.
1032-
destruct beta. simpl. unfold CanonS, E0_succ. simpl.
1018+
destruct beta. simpl. unfold E0_succ. simpl.
10331019
apply E0_eq_intro. simpl.
10341020
now rewrite (canon_succ).
10351021
Qed.
@@ -1043,12 +1029,12 @@ Qed.
10431029

10441030
Lemma CanonSSn (i:nat) :
10451031
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)).
10481034
Proof.
10491035
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.
10521038
- unfold lt, E0_phi0; repeat rewrite cnf_rw.
10531039
apply canonS_LT ; trivial.
10541040
apply nf_phi0;auto with E0.
@@ -1058,20 +1044,21 @@ Proof.
10581044
Qed.
10591045

10601046
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)).
10631049
Proof.
10641050
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.
10661052
- now rewrite cnf_phi0.
10671053
- apply cnf_ok.
10681054
- destruct alpha; cbn; assumption.
10691055
Qed.
10701056

10711057

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.
10731060
Proof.
1074-
destruct alpha. unfold E0lt, CanonS. cbn.
1061+
destruct alpha. unfold E0lt. cbn.
10751062
intro;apply canonS_LT; auto.
10761063
intro H0; subst. apply H. unfold E0zero; f_equal.
10771064
apply nf_proof_unicity.
@@ -1091,17 +1078,17 @@ Qed.
10911078
Lemma Canon_of_limit_not_null : forall i alpha, E0limit alpha ->
10921079
Canon alpha (S i) <> E0zero.
10931080
Proof.
1094-
destruct alpha;simpl;unfold CanonS; simpl; rewrite E0_eq_iff.
1081+
destruct alpha;simpl; unfold Canon; simpl; rewrite E0_eq_iff.
10951082
simpl; apply T1limit_canonS_not_zero; auto.
10961083
Qed.
10971084

10981085
#[global]
10991086
Hint Resolve CanonS_lt Canon_lt Canon_of_limit_not_null : E0.
11001087

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) =
11021089
Omega_term alpha i.
11031090
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.
11051092
simpl cnf; rewrite pred_of_succ; case_eq (succ (cnf alpha)).
11061093
- intro H; destruct (succ_not_zero _ H); auto.
11071094
- reflexivity.

theories/ordinals/Epsilon0/Hprime.v

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ Lemma H'_omega_double k :
160160
H'_ (E0_omega * 2)%e0 k = (4 * k + 3)%nat.
161161
Proof.
162162
rewrite H'_eq3; simpl Canon; [ | now compute].
163-
ochange (CanonS (E0_omega * E0finS 1)%e0 k) (E0_omega + (S k))%e0;
163+
ochange (Canon (E0_omega * E0finS 1)%e0 (S k)) (E0_omega + (S k))%e0;
164164
rewrite H'_Plus_Fin, H'_omega; abstract lia.
165165
Qed.
166166
(* end snippet HprimeExamplesa:: no-out *)
@@ -243,16 +243,16 @@ Proof with auto with E0.
243243
- intros beta Hbeta H; destruct (Zero_Limit_Succ_dec beta).
244244
destruct s.
245245
+ subst; intro k. autorewrite with H'_rw E0_rw using trivial.
246-
+ intro k; assert (CanonS (Omega_term alpha i + beta)%e0 k =
247-
(Omega_term alpha i + (CanonS beta k))%e0).
246+
+ intro k; assert (Canon (Omega_term alpha i + beta)%e0 (S k) =
247+
(Omega_term alpha i + (Canon beta (S k)))%e0).
248248
{ rewrite CanonS_plus_1; auto with E0.
249249
intro; subst alpha; red in H; simpl in H; apply LT_one in H.
250250
unfold E0limit in e; rewrite H in e; discriminate e.
251251
}
252252
rewrite H'_eq3, H0.
253-
specialize (Hbeta (CanonS beta k)).
254-
assert (CanonS beta k o< beta)%e0 by auto with E0.
255-
assert (CanonS beta k o< E0_phi0 alpha)%e0 by (eapply Lt_trans; eauto).
253+
specialize (Hbeta (Canon beta (S k))).
254+
assert (Canon beta (S k) o< beta)%e0 by auto with E0.
255+
assert (Canon beta (S k) o< E0_phi0 alpha)%e0 by (eapply Lt_trans; eauto).
256256
now rewrite (Hbeta H1 H2 k), (H'_eq3 beta).
257257
apply T1limit_plus; auto.
258258
+ intro k; destruct s as [gamma Hgamma]; subst.
@@ -279,18 +279,17 @@ Lemma H'_Omega_term_1 : alpha <> E0zero -> forall k,
279279

280280
Proof with auto with E0.
281281
intros H k; rewrite H'_eq3 ...
282-
- ochange (CanonS (Omega_term alpha (S i)) k)
283-
(Cons alpha i (CanonS (E0_phi0 alpha) k)).
282+
- ochange (Canon (Omega_term alpha (S i)) (S k))
283+
(Cons alpha i (Canon (E0_phi0 alpha) (S k))).
284284
+ rewrite H'_cons ...
285285
* f_equal; rewrite (H'_eq3 (E0_phi0 alpha)) ...
286286
+ rewrite cnf_Cons ...
287-
* unfold CanonS. repeat rewrite cnf_rw.
288-
unfold canonS.
287+
* unfold Canon. repeat rewrite cnf_rw.
289288
rewrite cnf_Omega_term, cnf_phi0.
290-
unfold Omega_term; simpl. unfold canonS.
289+
unfold Omega_term; simpl.
291290
destruct (cnf alpha) ...
292291
destruct (pred (cons t1 n t2)) ...
293-
- unfold canonS; apply T1limit_Omega_term ...
292+
- apply T1limit_Omega_term ...
294293
Qed.
295294

296295
End H'_cons.

theories/ordinals/Epsilon0/Large_Sets.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ Definition L_omega_cube := L_lim L_omega_square_times .
725725
Lemma L_omega_cube_ok : L_spec (T1.phi0 3) L_omega_cube.
726726
Proof.
727727
unfold L_omega_cube; apply L_lim_ok; auto with T1.
728-
- intro k; simpl canonS; apply L_omega_square_times_ok.
728+
- intro k; simpl canon; apply L_omega_square_times_ok.
729729
Qed.
730730

731731
Lemma L_omega_cube_eqn i :

0 commit comments

Comments
 (0)