Zulip Chat Archive
Stream: new members
Topic: Proof that uses mutual recursion
Vivek Rajesh Joshi (Dec 22 2023 at 06:58):
In TPIL Chapter 8 (Induction and recursion), I'm not familiar with the format that is used in this proof regarding mutual recursion of Even and Odd. Can someone explain what the code means here, i.e. what does _, mean and how odd_succ is helping us here?
mutual
 inductive Even : Nat → Prop where
   | even_zero : Even 0
   | even_succ : ∀ n, Odd n → Even (n + 1)
 inductive Odd : Nat → Prop where
   | odd_succ : ∀ n, Even n → Odd (n + 1)
end
open Even Odd
theorem even_of_odd_succ : ∀ n, Odd (n + 1) → Even n
  | _, odd_succ n h => h
Ruben Van de Velde (Dec 22 2023 at 08:11):
This is "pattern matching". The underscore is used instead of a name when the name is not used or can be derived automatically. The comma separates parts of the pattern, so lean reads this as "take a natural number (from the ∀ n), and take a value of type Odd (n + 1) if it looks like odd_succ something something, and name the somethings n and h, and then the proof for this case is given after the =>
Ruben Van de Velde (Dec 22 2023 at 08:12):
Generally you'd have more than one alternative (starting with the | bar), but in this case Odd (n + 1) can only be constructed as odd_succ
Ruben Van de Velde (Dec 22 2023 at 08:13):
Compare with:
theorem even_of_odd_succ : ∀ n, Even n → Odd (n + 1)
  | 0, even_zero => sorry
  | n + 1, even_succ _ h => sorry
Vivek Rajesh Joshi (Dec 22 2023 at 08:52):
Got it, thanks :thumbs_up:
Last updated: May 02 2025 at 03:31 UTC