From mathcomp Require Import all_ssreflect. Fixpoint twice (n: nat): nat := if n is n'.+1 then (twice n').+2 else 0. Lemma twiceDouble: forall n:nat, twice (2 * n) = twice n + twice n. Proof. elim=> [|n IHn]. - done. - rewrite !addSn. rewrite -/twice. rewrite mulnS. rewrite -IHn. Abort. Context (A B C: Prop). Lemma HilbertS: (A -> B -> C) -> (A -> B) -> A -> C. Proof. move=> Habc Hab. move: Habc.