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.