reserve G, G1, G2 for _Graph, H for Subgraph of G;

theorem Th36:
  (G is loopless iff G.allSG() is loopless) &
  (G is non-multi iff G.allSG() is non-multi) &
  (G is non-Dmulti iff G.allSG() is non-Dmulti) &
  (G is simple iff G.allSG() is simple) &
  (G is Dsimple iff G.allSG() is Dsimple) &
  (G is acyclic iff G.allSG() is acyclic) &
  (G is edgeless iff G.allSG() is edgeless)
proof
  :: loopless
  thus A1: G is loopless implies G.allSG() is loopless
  proof
    assume A2: G is loopless;
    G is GraphUnion of G.allSG() by Th35;
    hence G.allSG() is loopless by A2, GLIB_014:23;
  end;
  thus A3: G.allSG() is loopless implies G is loopless
  proof
    assume A4: G.allSG() is loopless;
    G is GraphUnion of G.allSG() by Th35;
    hence G is loopless by A4;
  end;
  :: non-multi
  thus A5: G is non-multi implies G.allSG() is non-multi
  proof
    assume A6: G is non-multi;
    now
      let H be _Graph;
      assume H in G.allSG();
      then H is Subgraph of G by Th1;
      hence H is non-multi by A6;
    end;
    hence thesis by GLIB_014:def 4;
  end;
  thus A7: G.allSG() is non-multi implies G is non-multi
  proof
    assume A8: G.allSG() is non-multi;
    G | _GraphSelectors in G.allSG() by Th3;
    then A9: G | _GraphSelectors is non-multi by A8;
    G == G | _GraphSelectors by GLIB_000:128;
    hence thesis by A9, GLIB_000:89;
  end;
  :: non-Dmulti
  thus A10: G is non-Dmulti implies G.allSG() is non-Dmulti
  proof
    assume A11: G is non-Dmulti;
    now
      let H be _Graph;
      assume H in G.allSG();
      then H is Subgraph of G by Th1;
      hence H is non-Dmulti by A11;
    end;
    hence thesis by GLIB_014:def 5;
  end;
  thus A12: G.allSG() is non-Dmulti implies G is non-Dmulti
  proof
    assume A13: G.allSG() is non-Dmulti;
    G | _GraphSelectors in G.allSG() by Th3;
    then A14: G | _GraphSelectors is non-Dmulti by A13;
    G == G | _GraphSelectors by GLIB_000:128;
    hence thesis by A14, GLIB_000:89;
  end;
  :: simple
  thus G is simple implies G.allSG() is simple by A1, A5;
  thus G.allSG() is simple implies G is simple by A3, A7;
  :: Dsimple
  thus G is Dsimple implies G.allSG() is Dsimple by A1, A10;
  thus G.allSG() is Dsimple implies G is Dsimple by A3, A12;
  :: acyclic
  hereby
    assume A15: G is acyclic;
    now
      let H be _Graph;
      assume H in G.allSG();
      then H is Subgraph of G by Th1;
      hence H is acyclic by A15;
    end;
    hence G.allSG() is acyclic by GLIB_014:def 8;
  end;
  hereby
    assume A16: G.allSG() is acyclic;
    G | _GraphSelectors in G.allSG() by Th3;
    then A17: G | _GraphSelectors is acyclic by A16;
    G == G | _GraphSelectors by GLIB_000:128;
    hence G is acyclic by A17, GLIB_002:44;
  end;
  :: edgeless
  hereby
    assume A18: G is edgeless;
    now
      let H be _Graph;
      assume H in G.allSG();
      then H is Subgraph of G by Th1;
      hence H is edgeless by A18;
    end;
    hence G.allSG() is edgeless by GLIB_014:def 12;
  end;
  hereby
    assume A19: G.allSG() is edgeless;
    G | _GraphSelectors in G.allSG() by Th3;
    then A20: G | _GraphSelectors is edgeless by A19;
    G == G | _GraphSelectors by GLIB_000:128;
    hence G is edgeless by A20, GLIB_008:52;
  end;
end;
