proposition: Lemma BIT0_def : BIT0 = (@ε (arr nat nat') (fun fn : forall _ : nat, nat => and (@Logic.eq nat (fn O) O) (forall n : nat, @Logic.eq nat (fn (S n)) (S (S (fn n)))))).
proof: Proof. match goal with [|- _ = ε ?x] => set (Q := x) end. assert (i : exists q, Q q). exists BIT0. split; reflexivity. generalize (ε_spec i). intros [h0 hs]. apply fun_ext; intro n. induction n; simpl. rewrite h0. reflexivity. rewrite hs, IHn. reflexivity. Qed.
imports: Coq.Logic.ClassicalEpsilon ClassicalFacts PropExtensionalityFacts Lia PeanoNat