reserve GS for GraphStruct;
reserve G,G1,G2,G3 for _Graph;
reserve e,x,x1,x2,y,y1,y2,E,V,X,Y for set;
reserve n,n1,n2 for Nat;
reserve v,v1,v2 for Vertex of G;

theorem
  for G being _Graph holds G is loopless iff
    for v being Vertex of G holds not v in v.allNeighbors()
proof
  let G be _Graph;
  hereby
    assume A1: G is loopless;
    let v be Vertex of G;
    thus not v in v.allNeighbors()
    proof
      assume v in v.allNeighbors();
      then consider e being object such that
        A2: e Joins v,v,G by Th71;
      thus contradiction by A1, A2;
    end;
  end;
  assume A3: for v being Vertex of G holds not v in v.allNeighbors();
  for v being object holds not ex e being object st e Joins v,v,G
  proof
    given v being object such that
      A4: ex e being object st e Joins v,v,G;
    reconsider v0 = v as Vertex of G by A4, FUNCT_2:5;
    not v0 in v0.allNeighbors() by A3;
    hence contradiction by A4, Th71;
  end;
  hence thesis by Th18;
end;
