fact: Variable (d : nat) (φ : nat -> X) (ψ : nat -> Y) (H1 : forall x1 x2 y1 y2, R x1 y1 -> R x2 y2 -> Q x1 x2 <-> P (f y1 y2)) (H2 : forall x, exists y, R x y /\ P (f (ψ d) y)) (H3 : forall y, P (f (ψ d) y) -> exists x, R x y).
imports: List Arith Bool Lia Eqdep_dec Undecidability.Shared.Libs.DLW.Utils(utils_tac utils_list utils_nat finite) Undecidability.Shared.Libs.DLW.Vec(pos vec) Undecidability.FOL.TRAKHTENBROT(notations utils fol_ops fo_sig fo_terms fo_logic fo_sat)