theory John imports Complex_Main
begin

axiomatization
f :: "real => real" and
g :: "real => real" and
h :: "real => real" where
ax1: "EX x. ALL y. x ~= y --> h x > h y" and
ax2: "ALL x. (ALL y. x ~= y --> h x > h y) --> g x = 0"

lemma "EX x. g x = 0"
by (metis ax1 ax2)

lemma "EX x. g x = 0"
 apply (insert ax1)
 apply (erule exE)
 apply (rule_tac x="x" in exI)
 apply (erule_tac ax2[THEN spec, THEN mp])
done

lemma "EX x. g x = 0"
proof -
  from ax1 obtain x where A: "ALL y. x ~= y --> h y < h x" ..
  from ax2 have "(ALL y. x ~= y --> h x > h y) --> g x = 0" ..
  hence "g x = 0" using A ..
  thus "EX x. g x = 0" ..
qed

end
