I'm just starting out with lean.
Say I want to prove something about functions between two finite types. For example
example (f : Bool -> Bool) : (∀ x : Bool, f (f (f x)) = f x) := sorry
since there are just a few possibilities for f
ideally I'd want something like cases x <;> cases f <;> rfl
, but I can't do cases f
.
Currently, I don't know how to prove this at all, I'd think cases
/match
on (f false)
and (f true)
but lean doesn't seem to remember this information about the function once it goes into the case.