Skip to content

Commit 95449ea

Browse files
committed
Fix intendation
1 parent 9941040 commit 95449ea

File tree

1 file changed

+41
-42
lines changed

1 file changed

+41
-42
lines changed

HumanEvalLean/HumanEval139.lean

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,52 +6,51 @@ def Nat.factorial : Nat → Nat
66
notation:10000 n "!" => Nat.factorial n
77

88
def Nat.brazilianFactorial : Nat → Nat
9-
| .zero => 1
10-
| .succ n => (Nat.succ n)! * brazilianFactorial n
9+
| .zero => 1
10+
| .succ n => (Nat.succ n)! * brazilianFactorial n
1111

1212
def special_factorial (n : Nat) : Nat :=
13-
special_factorial.go n 1 1 0
14-
where
15-
16-
go (n fact brazilFact curr : Nat) : Nat :=
17-
if _h: curr >= n
18-
then brazilFact
19-
else
20-
let fact' := (curr + 1) * fact
21-
let brazilFact' := brazilFact * fact'
22-
special_factorial.go n fact' brazilFact' (Nat.succ curr)
23-
termination_by n - curr
13+
special_factorial.go n 1 1 0
14+
where
15+
16+
go (n fact brazilFact curr : Nat) : Nat :=
17+
if _h: curr >= n
18+
then brazilFact
19+
else
20+
let fact' := (curr + 1) * fact
21+
let brazilFact' := brazilFact * fact'
22+
special_factorial.go n fact' brazilFact' (Nat.succ curr)
23+
termination_by n - curr
2424

2525
theorem special_factorial_func_correct {n : Nat} :
26-
special_factorial n = n.brazilianFactorial := by
27-
simp [special_factorial]
28-
suffices ∀ (curr fact brazilFact : Nat), fact = curr ! → brazilFact = curr.brazilianFactorial →
29-
curr ≤ n → special_factorial.go n fact brazilFact curr = n.brazilianFactorial by
30-
apply this
31-
· simp [Nat.factorial]
32-
· simp [Nat.brazilianFactorial]
33-
· simp
34-
intro curr
35-
induction h: n - curr generalizing curr with
36-
| zero =>
37-
intro _ brazil _ hbrazil hcurr
38-
rw [Nat.sub_eq_zero_iff_le] at h
39-
have : n = curr := by omega
40-
simp [special_factorial.go, h, this, hbrazil]
41-
| succ m ih =>
42-
intro fact brazilFact hfact hbrazil hcurr
43-
have : ¬ curr ≥ n := by omega
44-
unfold special_factorial.go
45-
simp only [ge_iff_le, this, ↓reduceDIte, Nat.succ_eq_add_one]
46-
have : n - (curr + 1) = m := by omega
47-
specialize ih (curr + 1) this ((curr + 1) * fact) (brazilFact * ((curr + 1) * fact))
48-
simp only [hfact, Nat.factorial, Nat.succ_eq_add_one, hbrazil, Nat.brazilianFactorial,
49-
forall_const] at ih
50-
simp only [hfact, hbrazil]
51-
apply ih
52-
· -- omega does not work
53-
rw [Nat.mul_comm, Nat.mul_assoc]
54-
· omega
26+
special_factorial n = n.brazilianFactorial := by
27+
simp [special_factorial]
28+
suffices ∀ (curr fact brazilFact : Nat), fact = curr ! → brazilFact = curr.brazilianFactorial →
29+
curr ≤ n → special_factorial.go n fact brazilFact curr = n.brazilianFactorial by
30+
apply this
31+
· simp [Nat.factorial]
32+
· simp [Nat.brazilianFactorial]
33+
· simp
34+
intro curr
35+
induction h: n - curr generalizing curr with
36+
| zero =>
37+
intro _ brazil _ hbrazil hcurr
38+
rw [Nat.sub_eq_zero_iff_le] at h
39+
have : n = curr := by omega
40+
simp [special_factorial.go, h, this, hbrazil]
41+
| succ m ih =>
42+
intro fact brazilFact hfact hbrazil hcurr
43+
have : ¬ curr ≥ n := by omega
44+
unfold special_factorial.go
45+
simp only [ge_iff_le, this, ↓reduceDIte, Nat.succ_eq_add_one]
46+
have : n - (curr + 1) = m := by omega
47+
specialize ih (curr + 1) this ((curr + 1) * fact) (brazilFact * ((curr + 1) * fact))
48+
simp only [hfact, Nat.factorial, Nat.succ_eq_add_one, hbrazil, Nat.brazilianFactorial,
49+
forall_const] at ih
50+
simp only [hfact, hbrazil]
51+
apply ih
52+
· ac_rfl
53+
· omega
5554

5655
theorem test1 : special_factorial 4 = 288 := by native_decide
5756
theorem test2 : special_factorial 5 = 34560 := by native_decide

0 commit comments

Comments
 (0)