Theory Tarski_ZF


section‹Two versions of Tarski's Axiom›

theory Tarski_ZF imports ZF.Cardinal

begin

text‹A small theory on the Tarski's axiom, inspired by a question on mathoverflow.org.›

subsection‹Two versions of the Tarski's axiom›

text‹There are two versions of the Tarski's axiom, one adapted from Tarski 1939
  according to Wikipedia's page on Tarski-Grothendieck set theory:

$\forall x.\  \exists y.\  x\in y \wedge  (\forall z\in y.\  \mathcal{P}(z)\in \mathcal{P}(y) 
\wedge  \mathcal{P}(z)\in y) 
\wedge  (\forall z\in \mathcal{P}(y).\  z\approx y \vee  z\in y))$, 

and another one from Metamath, adapted from that page:

$\forall x.\  \exists y.\  x\in y \wedge  (\forall z\in y.\  \mathcal{P}(z)\in \mathcal{P}(y) 
\wedge  (\exists w\in y.\  \mathcal{P}(z)\in \mathcal{P}(w))) 
\wedge  (\forall z.\  z\in \mathcal{P}(y) \longrightarrow  z\approx y \vee  z\in y)$. 

In this section we show that these two versions are equivalent. ›

text‹The two versions of Tarski's axiom are equivalent.›

theorem Tarski_axioms: shows 
  "(x. y. xy  (zy. Pow(z)Pow(y)  Pow(z)y)  (zPow(y). zy  zy))
  
  (x. y. xy  (zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w)))  (z. zPow(y)  zy  zy))"
proof
  assume T1: "x. y. xy  (zy. Pow(z)Pow(y)  Pow(z)y)  (zPow(y). zy  zy)"
  { fix x
    from T1 have "y. xy  (zy. Pow(z)Pow(y)  Pow(z)y)  (zPow(y). zy  zy)"
      by simp
    then obtain y where "xy" "zy. Pow(z)Pow(y)  Pow(z)y" "z. zPow(y)  zy  zy" 
      by auto
    hence 
      "y. xy  (zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w)))  (z. zPow(y)  zy  zy)"
      by auto
  } 
  thus 
    "x. y. xy  (zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w)))  (z. zPow(y)  zy  zy)"
    by simp
next
  assume T2: 
    "x. y. xy  (zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w)))  (z. zPow(y)  zy  zy)"
  { fix x
    from T2 have 
      "y. xy  (zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w)))  (z. zPow(y)  zy  zy)"
      by simp
    then obtain y where "xy" and I: "zy. Pow(z)Pow(y)  (wy. Pow(z)Pow(w))" and
      II: "z. zPow(y)  zy  zy" by auto
    from II have III: "zPow(y). zy  zy" by blast
    { fix z assume "zy"
      with I have "Pow(z)Pow(y)" and "wy. Pow(z)Pow(w)" by simp_all
      then obtain w where "wy" and "Pow(z)Pow(w)" by auto
      with I have "Pow(z)  y" by auto
      with I zy have "Pow(z)Pow(y)  Pow(z)y" by simp
    } hence "zy. Pow(z)Pow(y)  Pow(z)y" by simp
    with xy III have "y. xy  (zy. Pow(z)Pow(y)  Pow(z)y)  (zPow(y). zy  zy)"
      by auto
  }
  thus "x. y. xy  (zy. Pow(z)Pow(y)  Pow(z)y)  (zPow(y). zy  zy)"
    by simp
qed
       
end