<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    A good place to look for the low-down on the relationship between<br>
    HOL and set theory is a paper by Thomas Forster written originally<br>
    for (and published in the proceedings of) HUG94.<br>
    <br>
    "Weak systems of set theory related to HOL"<br>
    <br>
    This has however been subsequently augmented and corrected<br>
    so it is better to go to Thomas Forster's web page <br>
        <a class="moz-txt-link-freetext" href="https://www.dpmms.cam.ac.uk/~tf/">https://www.dpmms.cam.ac.uk/~tf/</a><br>
    or to write to him for a copy (tf at maths.cam.ac.uk).<br>
    <br>
    The essence of his conclusions as far as the present issue is<br>
    concerned, (as I understand it) are as follows:<br>
    <br>
    HOL has the same consistency strength as Maclane Set theory,<br>
    which is strictly weaker than Zermelo set theory.<br>
    Therefore an embedding of Zemelo into HOL will not be possible<br>
    without axiomatic extension of HOL, for which a strengthening<br>
    of the axiom of infinity would suffice.<br>
    For a typed Zermelo, and hence for the Z specification language<br>
    the situation is different, and a full embedding of the Z
    specification<br>
    language into HOL has been available in ProofPower since about<br>
    1994.<br>
    <br>
    What I address here is what is generally called a "shallow semantic
    embedding"<br>
    or any embedding method which one would expect to be<br>
    constrained by relative consistency strength.<br>
    For a "deep" semantic embedding the constraints are more strict<br>
    and a deep embedding of the Z specification language would also<br>
    fail (without axiomatic extension).<br>
    <br>
    The question of "embedding a proof in Z" might be interpreted<br>
    in a way not subject to such constraints, since the notion of<br>
    proof in Z (as opposed to "truth in Z") is semi-decidable and fully<br>
    formalisable in HOL.<br>
    <br>
    On the more detailed suggestions, the only functions over types,<br>
    <i>as such</i>, are type constructors, which cannot take numeric<br>
    parameters.  However the effect of functions over types, insofar<br>
    as they depend only on the cardinality of the type, can be realised.<br>
    A predicate of type:<br>
    <br>
        num -> * -> BOOL<br>
    <br>
    could be defined which would ignore the value of the second<br>
    parameter but would indicate whether the size of its type is<br>
    or is not greater than the nth power of Nat.<br>
    However, the principled objections mentioned above suggest <br>
    that this would not suffice to secure the desired embedding.<br>
    <br>
    Roger Jones<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
  </body>
</html>