Skip to content

Commit 8b7006d

Browse files
authored
Structured proofs (#2)
Update proof scripts according to Deducteam/lambdapi#717.
1 parent 2d1a418 commit 8b7006d

File tree

5 files changed

+119
-184
lines changed

5 files changed

+119
-184
lines changed

Bool.lp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ with _ and false ↪ false;
4343

4444
// Conditional
4545

46-
symbol if : 𝔹 → Π {a}, τ a → τ a → τ a;
46+
symbol if : 𝔹 → Π [a], τ a → τ a → τ a;
4747

4848
rule if true $x _ ↪ $x
4949
with if false _ $y ↪ $y;

Eq.lp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,37 @@
22

33
require open Stdlib.Set Stdlib.Prop;
44

5-
constant symbol = {a} : τ a → τ aProp;
5+
constant symbol = [a] : τ a → τ aProp;
66

77
notation = infix 10;
88

9-
constant symbol eq_refl {a} (xa) : π (x = x);
10-
constant symbol ind_eq {a} {x ya} : π (x = y) → Π p, π (p y) → π (p x);
9+
constant symbol eq_refl [a] (xa) : π (x = x);
10+
constant symbol ind_eq [a] [x ya] : π (x = y) → Π p, π (p y) → π (p x);
1111

1212
builtin "eq" ≔ =;
1313
builtin "refl"eq_refl;
1414
builtin "eqind"ind_eq;
1515

1616
// inequality
1717

18-
symbol{a} (x y : τ a) ≔ ¬ (x = y); // \neq
18+
symbol[a] (x y : τ a) ≔ ¬ (x = y); // \neq
1919

2020
notationinfix 1;
2121

2222
// symmetry
2323

24-
opaque symbol eq_sym {a} (x ya) : π (x = yy = x) ≔
24+
opaque symbol eq_sym [a] (x ya) : π (x = yy = x) ≔
2525
begin
2626
assume a x y xy;
2727
symmetry;
28-
apply xy;
28+
apply xy
2929
end;
3030

3131
// monotony wrt function application
3232

33-
opaque symbol feq {a b} (fa → τ b) {x ya} : π(x = yf x = f y) ≔
33+
opaque symbol feq [a b] (fa → τ b) [x ya] : π(x = yf x = f y) ≔
3434
begin
35-
assume a b f x y xy;
36-
apply ind_eq xyz, f z = f y);
37-
reflexivity;
35+
assume a b f x y xy;
36+
apply ind_eq xyz, f z = f y);
37+
reflexivity
3838
end;

FOL.lp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@ require open Stdlib.Set Stdlib.Prop;
44

55
// Universal quantification
66

7-
constant symbol{a} : (τ aProp) → Prop;
7+
constant symbol[a] : (τ aProp) → Prop;
88

99
notationquantifier;
1010

1111
rule π (∀ $f) ↪ Π x, π ($f x);
1212

1313
// Existential quantification
1414

15-
constant symbol{a} : (τ aProp) → Prop;
15+
constant symbol[a] : (τ aProp) → Prop;
1616

1717
notationquantifier;
1818

19-
constant symbol ∃ᵢ {a} p (xa) : π (p x) → π (∃ p);
20-
symbol ∃ₑ {a} p : π (∃ p) → Π q, (Π xa, π (p x) → π q) → π q;
19+
constant symbol ∃ᵢ [a] p (xa) : π (p x) → π (∃ p);
20+
symbol ∃ₑ [a] p : π (∃ p) → Π q, (Π xa, π (p x) → π q) → π q;
2121

2222
rule ∃ₑ _ (∃ᵢ _ $x $px) _ $f ↪ $f $x $px;

List.lp

Lines changed: 27 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2121
rule length □ ↪ 0
2222
with 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

2828
notationinfix right 15; // \cdot
2929

@@ -33,82 +33,64 @@ assert a x l m ⊢ x ⸬ l ⋅ m ≡ x ⸬ (l ⋅ m);
3333
rule □ ⋅ $m ↪ $m
3434
with ($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) ≔
3737
begin
38-
assume a;
39-
induction;
40-
// case l = □
41-
reflexivity;
42-
// case l = xl'
43-
assume x l' h; simplify; rewrite h; reflexivity;
38+
assume a; induction
39+
{ reflexivity }
40+
{ assume x l' h; simplify; rewrite h; reflexivity }
4441
end;
4542

4643
rule $m ⋅ □ ↪ $m;
4744

48-
opaque symbol length_concat {a} (l m : 𝕃 a) :
45+
opaque symbol length_concat [a] (l m : 𝕃 a) :
4946
π(length (lm) = length l + length m) ≔
5047
begin
51-
assume a;
52-
induction;
53-
// case l = □
54-
reflexivity;
55-
// case l = xl'
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 }
5751
end;
5852

5953
rule length ($l ⋅ $m) ↪ length $l + length $m;
6054

61-
opaque symbol concat_assoc {a} (l m n : 𝕃 a) : π((lm) ⋅ n = l ⋅ (mn)) ≔
55+
opaque symbol concat_assoc [a] (l m n : 𝕃 a) : π((lm) ⋅ n = l ⋅ (mn)) ≔
6256
begin
63-
assume a;
64-
induction;
65-
// case l = □
66-
reflexivity;
67-
// case l = xl'
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 }
6960
end;
7061

7162
rule ($l ⋅ $m) ⋅ $n ↪ $l ⋅ ($m ⋅ $n);
7263

7364
// List reversal
7465

75-
symbol rev {a} : 𝕃 a → 𝕃 a;
66+
symbol rev [a] : 𝕃 a → 𝕃 a;
7667

7768
rule rev □ ↪ □
7869
with rev ($x ⸬ $l) ↪ rev $l ⋅ ($x ⸬ □);
7970

80-
opaque symbol rev_concat {a} (l m : 𝕃 a) : π(rev (lm) = rev mrev l) ≔
71+
opaque symbol rev_concat [a] (l m : 𝕃 a) : π(rev (lm) = rev mrev l) ≔
8172
begin
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 }
8876
end;
8977

9078
rule rev ($l ⋅ $m) ↪ rev $mrev $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) ≔
9381
begin
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 }
10085
end;
10186

10287
rule 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) ≔
10590
begin
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 }
11294
end;
11395

11496
rule length (rev $l) ↪ length $l;

0 commit comments

Comments
 (0)