Submission Details
Challenge: rev
Submitted by: Zhe Ye
Submitted at: 2025-05-18 00:47:11
Code:
def rev(xs: List Int): List Int
:= xs.reverse
First Theorem Proof:
theorem reverse_correct(xs:List Int):
xs.length=(rev xs).length ∧
∀ i<xs.length, xs[i]! =(rev xs)[xs.length-1-i]!
:= by
unfold rev
constructor
· exact Eq.symm List.length_reverse
· intro i hi
have hi' : xs.length - 1 - i < xs.length := by exact Nat.sub_one_sub_lt_of_lt hi
simp only [List.getElem!_eq_getElem?_getD, hi, List.getElem?_eq_getElem, Int.default_eq_zero,
Option.getD_some, List.length_reverse, hi']
exact List.getElem_eq_getElem_reverse hi
Status: Incorrect
Feedback:
Compilation error for /root/CodeProofTheArena/temp/tmp1zbqbzfx/proof.lean: /root/CodeProofTheArena/temp/tmp1zbqbzfx/proof.lean:14:18: error: application type mismatch Eq.symm List.length_reverse argument List.length_reverse has type ∀ (as : List ?m.357), as.reverse.length = as.length : Prop but is expected to have type xs.reverse.length = xs.length : Prop /root/CodeProofTheArena/temp/tmp1zbqbzfx/proof.lean:17:15: error: unknown constant 'List.getElem!_eq_getElem?_getD' /root/CodeProofTheArena/temp/tmp1zbqbzfx/proof.lean:17:4: error: simp made no progress