Skip to content

Commit 9f9f953

Browse files
authored
declare theorems as opaque symbols (#52)
1 parent f33f97d commit 9f9f953

File tree

3 files changed

+78
-78
lines changed

3 files changed

+78
-78
lines changed

Comp.lp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@ with isGe Gt ↪ true;
4949

5050
// Discriminate constructors
5151

52-
symbol LtEq : π (LtEq) ≔
52+
opaque symbol LtEq : π (LtEq) ≔
5353
begin
5454
assume h; refine ind_eq hn, istrue(isEq n)) ⊤ᵢ
5555
end;
5656

57-
symbol GtEq : π (GtEq) ≔
57+
opaque symbol GtEq : π (GtEq) ≔
5858
begin
5959
assume h; refine ind_eq hn, istrue(isEq n)) ⊤ᵢ
6060
end;
6161

62-
symbol GtLt : π (GtLt) ≔
62+
opaque symbol GtLt : π (GtLt) ≔
6363
begin
6464
assume h; refine ind_eq hn, istrue(isLt n)) ⊤ᵢ
6565
end;
@@ -72,7 +72,7 @@ rule opp Eq ↪ Eq
7272
with opp LtGt
7373
with opp GtLt;
7474

75-
symbol opp_idem c : π (opp (opp c) = c) ≔
75+
opaque symbol opp_idem c : π (opp (opp c) = c) ≔
7676
begin
7777
induction { reflexivity; } { reflexivity; } { reflexivity; }
7878
end;

Pos.lp

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,22 @@ with isH H ↪ true;
3737

3838
// Discriminate constructors
3939

40-
symbol IH [x] : π (I xH) ≔
40+
opaque symbol IH [x] : π (I xH) ≔
4141
begin
4242
assume x h; refine ind_eq hx, istrue(isH x)) ⊤ᵢ;
4343
end;
4444

45-
symbol OH [x] : π (O xH) ≔
45+
opaque symbol OH [x] : π (O xH) ≔
4646
begin
4747
assume x h; refine ind_eq hx, istrue(isH x)) ⊤ᵢ;
4848
end;
4949

50-
symbol IO [x y] : π (I xO y) ≔
50+
opaque symbol IO [x y] : π (I xO y) ≔
5151
begin
5252
assume x y h; refine ind_eq hx, istrue(isO x)) ⊤ᵢ;
5353
end;
5454

55-
opaque symbol caseH x : π(x = HxH) ≔
55+
opaque opaque symbol caseH x : π(x = HxH) ≔
5656
begin
5757
induction
5858
{ assume x h; apply ∨ᵢ₂; refine IH }
@@ -68,7 +68,7 @@ rule projO (O $x) ↪ $x
6868
with projO (I $x) ↪ I $x
6969
with projO HH;
7070

71-
opaque symbol O_inj p q : π(O p = O q) → π(p = q) ≔
71+
opaque opaque symbol O_inj p q : π(O p = O q) → π(p = q) ≔
7272
begin
7373
assume p q h; apply feq projO h
7474
end;
@@ -79,7 +79,7 @@ rule projI (I $x) ↪ $x
7979
with projI (O $x) ↪ O $x
8080
with projI HH;
8181

82-
opaque symbol I_inj p q : π(I p = I q) → π(p = q) ≔
82+
opaque opaque symbol I_inj p q : π(I p = I q) → π(p = q) ≔
8383
begin
8484
assume p q h; apply feq projI h
8585
end;
@@ -102,15 +102,15 @@ with val (I $x) ↪ val (O $x) +1;
102102

103103
assertval (O (I H)) ≡ 6;
104104

105-
opaque symbol valS x : π(val (succ x) = val x +1) ≔
105+
opaque opaque symbol valS x : π(val (succ x) = val x +1) ≔
106106
begin
107107
induction
108108
{ assume x h; simplify; rewrite h; reflexivity }
109109
{ assume x h; reflexivity }
110110
{ reflexivity }
111111
end;
112112

113-
opaque symbol val_surj [n] : π(n0 ⇒ `∃ x, val x = n) ≔
113+
opaque opaque symbol val_surj [n] : π(n0 ⇒ `∃ x, val x = n) ≔
114114
begin
115115
induction
116116
{ assume h; apply ⊥ₑ; apply h; reflexivity }
@@ -121,7 +121,7 @@ begin
121121
}
122122
end;
123123

124-
opaque symbol val0 x : π(val x0) ≔
124+
opaque opaque symbol val0 x : π(val x0) ≔
125125
begin
126126
induction
127127
{ assume x h; refine s0 }
@@ -131,12 +131,12 @@ begin
131131
{ refine s0 }
132132
end;
133133

134-
opaque symbol 2*val0 x : π(val x + val x0) ≔
134+
opaque opaque symbol 2*val0 x : π(val x + val x0) ≔
135135
begin
136136
assume x h; apply ⊥ₑ; apply val0 x; apply 2*=0; apply h
137137
end;
138138

139-
opaque symbol val_inj [x y] : π(val x = val y) → π(x = y) ≔
139+
opaque opaque symbol val_inj [x y] : π(val x = val y) → π(x = y) ≔
140140
begin
141141
induction
142142
{ assume x h; induction
@@ -163,7 +163,7 @@ end;
163163

164164
// ℕ-like Induction Principle
165165

166-
symbol ind_eano p : π (p H) → (Π x, π (p x) → π (p (succ x))) → Π x, π (p x) ≔
166+
opaque symbol ind_eano p : π (p H) → (Π x, π (p x) → π (p (succ x))) → Π x, π (p x) ≔
167167
begin
168168
assume p pH psucc;
169169
have i: π(`∀ n, `∀ x, val x = np x) {
@@ -216,7 +216,7 @@ assert ⊢ add (O (I (O (I (O (I (O (I H))))))))
216216

217217
// Interaction of succ and add
218218

219-
symbol succ_add x y : π (succ (add x y) = add_carry x y) ≔
219+
opaque symbol succ_add x y : π (succ (add x y) = add_carry x y) ≔
220220
begin
221221
induction
222222
// case I
@@ -235,7 +235,7 @@ begin
235235
{ induction { reflexivity } { reflexivity } { reflexivity } }
236236
end;
237237

238-
symbol add_succ x y : π (add (succ x) y = succ (add x y)) ≔
238+
opaque symbol add_succ x y : π (add (succ x) y = succ (add x y)) ≔
239239
begin
240240
induction
241241
// case I
@@ -254,7 +254,7 @@ begin
254254
{ induction { reflexivity } { reflexivity } { reflexivity } }
255255
end;
256256

257-
symbol add_succ_right x y : π (add x (succ y) = succ (add x y)) ≔
257+
opaque symbol add_succ_right x y : π (add x (succ y) = succ (add x y)) ≔
258258
begin
259259
refine ind_eanox, `∀ y, add x (succ y) = succ (add x y)) _ _
260260
// case H
@@ -266,7 +266,7 @@ end;
266266

267267
// Associativity of the addition
268268

269-
symbol add_assoc x y z : π (add (add x y) z = add x (add y z)) ≔
269+
opaque symbol add_assoc x y z : π (add (add x y) z = add x (add y z)) ≔
270270
begin
271271
refine ind_eanox, `∀ y, `∀ z, add (add x y) z = add x (add y z)) _ _
272272
// case H
@@ -279,7 +279,7 @@ end;
279279

280280
// Commutativity of the addition
281281

282-
symbol add_com x y : π (add x y = add y x) ≔
282+
opaque symbol add_com x y : π (add x y = add y x) ≔
283283
begin
284284
refine ind_eanox, `∀ y, add x y = add y x) _ _
285285
// case H
@@ -297,15 +297,15 @@ rule pos_pred_double (I $x) ↪ I (O $x)
297297
with pos_pred_double (O $x) ↪ I (pos_pred_double $x)
298298
with pos_pred_double HH;
299299

300-
symbol pos_pred_double_succ x : π (pos_pred_double (succ x) = I x) ≔
300+
opaque symbol pos_pred_double_succ x : π (pos_pred_double (succ x) = I x) ≔
301301
begin
302302
induction
303303
{ assume x xrec; simplify; rewrite xrec; reflexivity }
304304
{ reflexivity }
305305
{ reflexivity }
306306
end;
307307

308-
symbol succ_pos_pred_double x : π (succ (pos_pred_double x) = O x) ≔
308+
opaque symbol succ_pos_pred_double x : π (succ (pos_pred_double x) = O x) ≔
309309
begin
310310
induction
311311
{ reflexivity }
@@ -331,7 +331,7 @@ symbol compare x y ≔ compare_acc x Eq y;
331331

332332
// Commutative property of compare
333333

334-
symbol compare_acc_com x y c :
334+
opaque symbol compare_acc_com x y c :
335335
π (compare_acc y c x = opp (compare_acc x (opp c) y)) ≔
336336
begin
337337
induction
@@ -354,14 +354,14 @@ begin
354354
{ assume c; simplify; rewrite opp_idem; reflexivity } }
355355
end;
356356

357-
symbol compare_com x y : π (compare y x = opp (compare x y)) ≔
357+
opaque symbol compare_com x y : π (compare y x = opp (compare x y)) ≔
358358
begin
359359
assume x y; refine compare_acc_com x y Eq;
360360
end;
361361

362362
// Compare decides the equality
363363

364-
symbol compare_acc_nEq x y c : π (cEqcompare_acc x c yEq) ≔
364+
opaque symbol compare_acc_nEq x y c : π (cEqcompare_acc x c yEq) ≔
365365
begin
366366
induction
367367
// case I
@@ -383,7 +383,7 @@ begin
383383
{ assume c Hc; refine Hc } }
384384
end;
385385

386-
symbol compare_decides x y : π (compare x y = Eqx = y) ≔
386+
opaque symbol compare_decides x y : π (compare x y = Eqx = y) ≔
387387
begin
388388
induction
389389
// case I
@@ -407,7 +407,7 @@ end;
407407

408408
// Compare with Gt or Lt
409409

410-
symbol compare_Lt x y :
410+
opaque symbol compare_Lt x y :
411411
π (compare_acc x Lt y = case_Comp (compare x y) Lt Lt Gt) ≔
412412
begin
413413
induction
@@ -438,7 +438,7 @@ begin
438438
{ induction { reflexivity } { reflexivity } { reflexivity } }
439439
end;
440440

441-
symbol compare_Gt x y :
441+
opaque symbol compare_Gt x y :
442442
π (compare_acc x Gt y = case_Comp (compare x y) Gt Lt Gt) ≔
443443
begin
444444
induction
@@ -470,27 +470,27 @@ end;
470470

471471
// Compatibility of compare with the addition
472472

473-
symbol compare_H_Lt y : π (compare_acc H Lt y = Lt) ≔
473+
opaque symbol compare_H_Lt y : π (compare_acc H Lt y = Lt) ≔
474474
begin
475475
induction { reflexivity } { reflexivity } { reflexivity }
476476
end;
477477

478-
symbol compare_Gt_H x : π (compare_acc x Gt H = Gt) ≔
478+
opaque symbol compare_Gt_H x : π (compare_acc x Gt H = Gt) ≔
479479
begin
480480
induction { reflexivity } { reflexivity } { reflexivity }
481481
end;
482482

483-
symbol compare_H_succ y c : π (compare_acc H c (succ y) = Lt) ≔
483+
opaque symbol compare_H_succ y c : π (compare_acc H c (succ y) = Lt) ≔
484484
begin
485485
induction { reflexivity } { reflexivity } { reflexivity }
486486
end;
487487

488-
symbol compare_succ_H x c : π (compare_acc (succ x) c H = Gt) ≔
488+
opaque symbol compare_succ_H x c : π (compare_acc (succ x) c H = Gt) ≔
489489
begin
490490
induction { reflexivity } { reflexivity } { reflexivity }
491491
end;
492492

493-
symbol compare_succ_Lt x y :
493+
opaque symbol compare_succ_Lt x y :
494494
π (compare_acc (succ x) Lt y = compare_acc x Gt y) ≔
495495
begin
496496
induction
@@ -510,15 +510,15 @@ begin
510510
{ reflexivity } }
511511
end;
512512

513-
symbol compare_Gt_succ x y :
513+
opaque symbol compare_Gt_succ x y :
514514
π (compare_acc x Gt (succ y) = compare_acc x Lt y) ≔
515515
begin
516516
assume x y;
517517
rewrite compare_acc_com; rewrite .[u in _ = u] compare_acc_com;
518518
simplify; rewrite compare_succ_Lt; reflexivity;
519519
end;
520520

521-
symbol compare_succ_succ x y c :
521+
opaque symbol compare_succ_succ x y c :
522522
π (compare_acc (succ x) c (succ y) = compare_acc x c y) ≔
523523
begin
524524
induction
@@ -541,7 +541,7 @@ begin
541541
{ reflexivity } }
542542
end;
543543

544-
symbol compare_compat_add a x y :
544+
opaque symbol compare_compat_add a x y :
545545
π (compare (add x a) (add y a) = compare x y) ≔
546546
begin
547547
refine ind_eanoa, `∀ x, `∀ y, compare (add x a) (add y a) = compare x y) _ _

0 commit comments

Comments
 (0)