lean-talk-sp24/LeanTalkSP24/basics2.lean

45 lines
903 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Mathlib.Tactic
open Finset
theorem sum_first_n {n : } : 2 * (range (n + 1)).sum id = n * (n + 1) := by
induction' n with d hd
· simp
· rw [sum_range_succ, mul_add, hd, id.def, Nat.succ_eq_add_one]
linarith
open Set
example {α : Type _} {s t : Set α} : s s ∩ t = s := by
ext x; constructor
rintro (xs | xsti)
· trivial
· exact And.left xsti
exact Or.inl
-- Examples of definitions
def IsEven (n : ) : Bool := (n%2) = 0
def IsOdd (n : ) : Bool := ¬IsEven n
#eval IsEven 9
#eval IsOdd 9
example {n : } : IsOdd n = ((n%2) = 1) := by
apply iff_iff_eq.mp
constructor
-- <;>
· intro h
unfold IsOdd IsEven at h
simp at h
trivial
· intro h
unfold IsOdd IsEven
simp
trivial
theorem nat_odd_or_even {n : } : (IsEven n)(IsOdd n):= by
apply or_iff_not_imp_left.mpr
intro h
unfold IsOdd
simp at *
trivial