Definition fmono (f: nat → nat):= ∀ x y, x ≤ y → f x ≤ f y.

Lemma prod_beq_eq A B (A_beq : A -> A -> bool) (B_beq : B -> B -> bool) (A_beq_eq : forall a1 a2, A_beq a1 a2 = true <-> a1 = a2) (B_beq_eq : forall b1 b2, B_beq b1 b2 = true <-> b1 = b2) p1 p2 : prod_beq _ _ A_beq B_beq p1 p2 = true <-> p1 = p2.