Theory M

section ‹ Ground Mereology ›

(*<*)
theory M
  imports PM
begin
(*>*)

text ‹ The theory of \emph{ground mereology} adds to premereology the antisymmetry of parthood, and
defines proper parthood as nonidentical parthood.\footnote{For this axiomatization of ground mereology see,
for example, cite"varzi_parts_1996" p. 261 and cite"casati_parts_1999" p. 36. For discussion of the 
antisymmetry of parthood see, for example, cite"cotnoir_antisymmetry_2010". For the definition of 
proper parthood as nonidentical parthood, see for example, cite"leonard_calculus_1940" p. 47.} 
In other words, ground mereology assumes that parthood is a partial order.›

locale M = PM +
  assumes part_antisymmetry: "P x y  P y x  x = y"
  assumes nip_eq: "PP x y  P x y  x  y"
begin

subsection ‹ Proper Parthood ›

lemma proper_implies_part: "PP x y  P x y"
proof -
  assume "PP x y"
  with nip_eq have "P x y  x  y"..
  thus "P x y"..
qed

lemma proper_implies_distinct: "PP x y  x  y"
proof -
  assume "PP x y"
  with nip_eq have "P x y  x  y"..
  thus "x  y"..
qed

lemma proper_implies_not_part: "PP x y  ¬ P y x"
proof -
  assume "PP x y"
  hence "P x y" by (rule proper_implies_part)
  show "¬ P y x"
  proof
    from PP x y have "x  y" by (rule proper_implies_distinct)
    moreover assume "P y x"
    with P x y have "x = y" by (rule part_antisymmetry)
    ultimately show "False"..
  qed
qed

lemma proper_part_asymmetry: "PP x y  ¬ PP y x"
proof -
  assume "PP x y"
  hence "P x y" by (rule proper_implies_part)
  from PP x y have "x  y" by (rule proper_implies_distinct)
  show "¬ PP y x"
  proof
    assume "PP y x"
    hence "P y x" by (rule proper_implies_part)
    with P x y have "x = y" by (rule part_antisymmetry)
    with x  y show "False"..
  qed
qed

lemma proper_implies_overlap: "PP x y  O x y"
proof -
  assume "PP x y"
  hence "P x y" by (rule proper_implies_part)
  thus "O x y" by (rule part_implies_overlap)
qed

end

text ‹ The rest of this section compares four alternative axiomatizations of ground mereology, and
verifies their equivalence. ›

text ‹ The first alternative axiomatization defines proper parthood as nonmutual instead of nonidentical parthood.\footnote{
See, for example, cite"varzi_parts_1996" p. 261 and cite"casati_parts_1999" p. 36. For the distinction
between nonmutual and nonidentical parthood, see cite"parsons_many_2014" pp. 6-8.}
In the presence of antisymmetry, the two definitions of proper parthood are equivalent.\footnote{
See cite"cotnoir_antisymmetry_2010" p. 398, cite"donnelly_using_2011" p. 233, 
cite"cotnoir_non-wellfounded_2012" p. 191, cite"obojska_remarks_2013" p. 344,
cite"cotnoir_does_2016" p. 128 and cite"cotnoir_is_2018".} ›

locale M1 = PM +
  assumes nmp_eq: "PP x y  P x y  ¬ P y x"
  assumes part_antisymmetry: "P x y  P y x  x = y"

sublocale M  M1
proof
  fix x y
  show nmp_eq: "PP x y  P x y  ¬ P y x"
  proof
    assume "PP x y"
    with nip_eq have nip: "P x y  x  y"..
    hence "x  y"..
    from nip have "P x y"..
    moreover have "¬ P y x"
    proof
      assume "P y x"
      with P x y have "x = y" by (rule part_antisymmetry)
      with x  y show "False"..
    qed
    ultimately show "P x y  ¬ P y x"..
  next
    assume nmp: "P x y  ¬ P y x"
    hence "¬ P y x"..
    from nmp have "P x y"..
    moreover have "x  y"
    proof
      assume "x = y"
      hence "¬ P y y" using ¬ P y x by (rule subst)
      thus "False" using part_reflexivity..
    qed
    ultimately have "P x y  x  y"..
    with nip_eq show "PP x y"..
  qed
  show  "P x y  P y x  x = y" using part_antisymmetry.
qed

sublocale M1  M
proof
  fix x y
  show nip_eq: "PP x y  P x y  x  y"
  proof
    assume "PP x y"
    with nmp_eq have nmp: "P x y  ¬ P y x"..
    hence "¬ P y x"..
    from nmp have "P x y"..
    moreover have "x  y"
    proof
      assume "x = y"
      hence "¬ P y y" using ¬ P y x by (rule subst)
      thus "False" using part_reflexivity..
    qed
    ultimately show "P x y  x  y"..
  next
    assume nip: "P x y  x  y"
    hence "x  y"..
    from nip have "P x y"..
    moreover have "¬ P y x"
    proof
      assume "P y x"
      with P x y have "x = y" by (rule part_antisymmetry)
      with x  y show "False"..
    qed
    ultimately have "P x y  ¬ P y x"..
    with nmp_eq show "PP x y"..
  qed
  show  "P x y  P y x  x = y" using part_antisymmetry.
qed

text ‹ Conversely, assuming the two definitions of proper parthood are equivalent entails the antisymmetry
of parthood, leading to the second alternative axiomatization, which assumes both equivalencies.\footnote{
For this point see especially cite"parsons_many_2014" pp. 9-10.} ›

locale M2 = PM +
  assumes nip_eq: "PP x y  P x y  x  y"
  assumes nmp_eq: "PP x y  P x y  ¬ P y x"

sublocale M  M2
proof
  fix x y
  show "PP x y  P x y  x  y" using nip_eq.
  show "PP x y  P x y  ¬ P y x" using nmp_eq.
qed

sublocale M2  M
proof
  fix x y
  show "PP x y  P x y  x  y" using nip_eq.
  show "P x y  P y x  x = y" 
  proof -
    assume "P x y"
    assume "P y x"
    show "x = y"
    proof (rule ccontr)
      assume "x  y"
      with P x y have "P x y  x  y"..
      with nip_eq have "PP x y"..
      with nmp_eq have "P x y  ¬ P y x"..
      hence "¬ P y x"..
      thus "False" using P y x..
    qed
  qed
qed

text ‹ In the context of the other axioms, antisymmetry is equivalent to the extensionality of parthood, 
which gives the third alternative axiomatization.\footnote{For this point see cite"cotnoir_antisymmetry_2010" p. 401 
and cite"cotnoir_non-wellfounded_2012" p. 191-2.} ›

locale M3 = PM +
  assumes nip_eq: "PP x y  P x y  x  y"
  assumes part_extensionality: "x = y  ( z. P z x  P z y)"

sublocale M  M3
proof
  fix x y
  show "PP x y  P x y  x  y" using nip_eq.
  show part_extensionality: "x = y  ( z. P z x  P z y)"
  proof
    assume "x = y"
    moreover have " z. P z x  P z x" by simp
    ultimately show " z. P z x  P z y" by (rule subst)
  next
    assume z: " z. P z x  P z y"
    show "x = y"
    proof (rule part_antisymmetry)
      from z have "P y x  P y y"..
      moreover have "P y y" by (rule part_reflexivity)
      ultimately show "P y x"..
    next
      from z have "P x x  P x y"..
      moreover have "P x x" by (rule part_reflexivity)
      ultimately show "P x y"..
    qed
  qed
qed

sublocale M3  M
proof
  fix x y
  show "PP x y  P x y  x  y" using nip_eq.
  show part_antisymmetry: "P x y  P y x  x = y"
  proof -
    assume "P x y"
    assume "P y x"
    have " z. P z x  P z y"
    proof
      fix z
      show "P z x  P z y"
      proof
        assume "P z x"
        thus "P z y" using P x y by (rule part_transitivity)
      next
        assume "P z y"
        thus "P z x" using P y x by (rule part_transitivity)
      qed
    qed
    with part_extensionality show "x = y"..
  qed
qed

text ‹The fourth axiomatization adopts proper parthood as primitive.\footnote{See, for example, 
cite"simons_parts:_1987", p. 26 and cite"casati_parts_1999" p. 37.} Improper parthood is
defined as proper parthood or identity.›

locale M4 =
  assumes part_eq: "P x y  PP x y  x = y"
  assumes  overlap_eq: "O x y  ( z. P z x  P z y)"
  assumes proper_part_asymmetry: "PP x y  ¬ PP y x"
  assumes proper_part_transitivity: "PP x y  PP y z  PP x z"
begin

lemma proper_part_irreflexivity: "¬ PP x x"
proof
  assume "PP x x"
  hence "¬ PP x x" by (rule proper_part_asymmetry)
  thus "False" using PP x x..
qed

end

sublocale M  M4
proof
  fix x y z
  show part_eq: "P x y  (PP x y  x = y)"
  proof
    assume "P x y"
    show "PP x y  x = y"
    proof cases
      assume "x = y"
      thus "PP x y  x = y"..
    next
      assume "x  y"
      with P x y have "P x y  x  y"..
      with nip_eq have "PP x y"..
      thus "PP x y  x = y"..
    qed
  next
    assume "PP x y  x = y"
    thus "P x y"
    proof
      assume "PP x y"
      thus "P x y" by (rule proper_implies_part)
    next
      assume "x = y" 
      thus "P x y" by (rule identity_implies_part)
    qed
  qed
  show "O x y  ( z. P z x  P z y)" using overlap_eq.
  show "PP x y  ¬ PP y x" using proper_part_asymmetry.
  show proper_part_transitivity: "PP x y  PP y z  PP x z"
  proof -
    assume "PP x y"
    assume "PP y z"
    have "P x z  x  z"
    proof
      from PP x y have "P x y" by (rule proper_implies_part)
      moreover from PP y z have "P y z" by (rule proper_implies_part)
      ultimately show "P x z" by (rule part_transitivity)
    next
      show "x  z"
      proof
        assume "x = z"
        hence "PP y x" using PP y z by (rule ssubst)
        hence "¬ PP x y" by (rule proper_part_asymmetry)
        thus "False" using PP x y..
      qed
    qed
    with nip_eq show "PP x z"..
  qed
qed

sublocale M4  M
proof
  fix x y z
  show proper_part_eq: "PP x y  P x y  x  y"
  proof
    assume "PP x y"
    hence "PP x y  x = y"..
    with part_eq have "P x y"..
    moreover have "x  y"
    proof
      assume "x = y"
      hence "PP y y" using PP x y by (rule subst)
      with proper_part_irreflexivity show "False"..
    qed
    ultimately show "P x y  x  y"..
  next
    assume rhs: "P x y  x  y"
    hence "x  y"..
    from rhs have "P x y"..
    with part_eq have "PP x y  x = y"..
    thus "PP x y" 
    proof
      assume "PP x y"
      thus "PP x y".
    next
      assume "x = y"
      with x  y show "PP x y"..
    qed
  qed
  show "P x x"
  proof -
    have "x = x" by (rule refl)
    hence "PP x x  x = x"..
    with part_eq show "P x x"..
  qed
  show "O x y  ( z. P z x  P z y)" using overlap_eq.
  show "P x y  P y x  x = y"
  proof -
    assume "P x y"
    assume "P y x"
    from part_eq have "PP x y  x = y" using P x y..
    thus "x = y"
    proof
      assume "PP x y"
      hence "¬ PP y x" by (rule proper_part_asymmetry)
      from part_eq have "PP y x  y = x" using P y x..
      thus "x = y"
      proof
        assume "PP y x"
        with ¬ PP y x show "x = y"..
      next
        assume "y = x"
        thus "x = y"..
      qed
    qed
  qed
  show "P x y  P y z  P x z"
  proof -
    assume "P x y"
    assume "P y z"
    with part_eq have "PP y z  y = z"..
    hence "PP x z  x = z"
    proof
      assume "PP y z"
      from part_eq have "PP x y  x = y" using P x y..
      hence "PP x z"
      proof
        assume "PP x y"
        thus "PP x z" using PP y z by (rule proper_part_transitivity)
      next
        assume "x = y"
        thus "PP x z" using PP y z by (rule ssubst)
      qed
      thus "PP x z  x = z"..
    next
      assume "y = z"
      moreover from part_eq have "PP x y  x = y" using P x y..
      ultimately show "PP x z  x = z" by (rule subst)
    qed
    with part_eq show "P x z"..
  qed
qed

(*<*) end (*>*)