@@ -16,14 +16,14 @@ rule τ (list $a) ↪ 𝕃 $a;
1616
1717// Length of a list
1818
19- symbol length { a } : 𝕃 a → ℕ;
19+ symbol length [ a ] : 𝕃 a → ℕ;
2020
2121rule length □ ↪ 0
2222with length (_ ⸬ $l ) ↪ s (length $l );
2323
2424// Concatenation of two lists
2525
26- symbol ⋅ { a } : 𝕃 a → 𝕃 a → 𝕃 a ;
26+ symbol ⋅ [ a ] : 𝕃 a → 𝕃 a → 𝕃 a ;
2727
2828notation ⋅ infix right 15 ; // \cdot
2929
@@ -33,82 +33,64 @@ assert a x l m ⊢ x ⸬ l ⋅ m ≡ x ⸬ (l ⋅ m);
3333rule □ ⋅ $m ↪ $m
3434with ($x ⸬ $l ) ⋅ $m ↪ $x ⸬ ($l ⋅ $m );
3535
36- opaque symbol concat_nil { a } (l :𝕃 a ) : π(l ⋅ □ = l ) ≔
36+ opaque symbol concat_nil [ a ] (l :𝕃 a ) : π(l ⋅ □ = l ) ≔
3737begin
38- assume a ;
39- induction ;
40- // case l = □
41- reflexivity ;
42- // case l = x ⸬ l '
43- assume x l ' h ; simplify ; rewrite h ; reflexivity ;
38+ assume a ; induction
39+ { reflexivity }
40+ { assume x l ' h ; simplify ; rewrite h ; reflexivity }
4441end ;
4542
4643rule $m ⋅ □ ↪ $m ;
4744
48- opaque symbol length_concat { a } (l m : 𝕃 a ) :
45+ opaque symbol length_concat [ a ] (l m : 𝕃 a ) :
4946 π(length (l ⋅ m ) = length l + length m ) ≔
5047begin
51- assume a ;
52- induction ;
53- // case l = □
54- reflexivity ;
55- // case l = x ⸬l '
56- assume x l ' h m ; simplify ; rewrite h ; reflexivity ;
48+ assume a ; induction
49+ { reflexivity }
50+ { assume x l ' h m ; simplify ; rewrite h ; reflexivity }
5751end ;
5852
5953rule length ($l ⋅ $m ) ↪ length $l + length $m ;
6054
61- opaque symbol concat_assoc { a } (l m n : 𝕃 a ) : π((l ⋅ m ) ⋅ n = l ⋅ (m ⋅ n )) ≔
55+ opaque symbol concat_assoc [ a ] (l m n : 𝕃 a ) : π((l ⋅ m ) ⋅ n = l ⋅ (m ⋅ n )) ≔
6256begin
63- assume a ;
64- induction ;
65- // case l = □
66- reflexivity ;
67- // case l = x ⸬l '
68- assume x l ' h m n ; simplify ; rewrite h ; reflexivity ;
57+ assume a ; induction
58+ { reflexivity }
59+ { assume x l ' h m n ; simplify ; rewrite h ; reflexivity }
6960end ;
7061
7162rule ($l ⋅ $m ) ⋅ $n ↪ $l ⋅ ($m ⋅ $n );
7263
7364// List reversal
7465
75- symbol rev { a } : 𝕃 a → 𝕃 a ;
66+ symbol rev [ a ] : 𝕃 a → 𝕃 a ;
7667
7768rule rev □ ↪ □
7869with rev ($x ⸬ $l ) ↪ rev $l ⋅ ($x ⸬ □);
7970
80- opaque symbol rev_concat { a } (l m : 𝕃 a ) : π(rev (l ⋅ m ) = rev m ⋅ rev l ) ≔
71+ opaque symbol rev_concat [ a ] (l m : 𝕃 a ) : π(rev (l ⋅ m ) = rev m ⋅ rev l ) ≔
8172begin
82- assume a ;
83- induction ;
84- // case l = □
85- simplify ; reflexivity ;
86- // case l = ⸬
87- assume x l h m ; simplify ; rewrite h ; reflexivity ;
73+ assume a ; induction
74+ { simplify ; reflexivity }
75+ { assume x l h m ; simplify ; rewrite h ; reflexivity }
8876end ;
8977
9078rule rev ($l ⋅ $m ) ↪ rev $m ⋅ rev $l ;
9179
92- opaque symbol rev_idem { a } (l :𝕃 a ) : π(rev (rev l ) = l ) ≔
80+ opaque symbol rev_idem [ a ] (l :𝕃 a ) : π(rev (rev l ) = l ) ≔
9381begin
94- assume a ;
95- induction ;
96- // case l = □
97- reflexivity ;
98- // case l = ⸬
99- assume x l h ; simplify ; rewrite h ; reflexivity ;
82+ assume a ; induction
83+ { reflexivity }
84+ { assume x l h ; simplify ; rewrite h ; reflexivity }
10085end ;
10186
10287rule rev (rev $l ) ↪ $l ;
10388
104- opaque symbol length_rev { a } (l : 𝕃 a ) : π(length (rev l ) = length l ) ≔
89+ opaque symbol length_rev [ a ] (l : 𝕃 a ) : π(length (rev l ) = length l ) ≔
10590begin
106- assume a ;
107- induction ;
108- // case l = □
109- simplify ; reflexivity ;
110- // case l = ⸬
111- assume x l h ; simplify ; rewrite h ; reflexivity ;
91+ assume a ; induction
92+ { simplify ; reflexivity }
93+ { assume x l h ; simplify ; rewrite h ; reflexivity }
11294end ;
11395
11496rule length (rev $l ) ↪ length $l ;
0 commit comments