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 G1 being _Graph, G2 being Subgraph of G1, v1 being Vertex of G1,
  v2 being Vertex of G2 st v1 = v2 holds v2.inNeighbors() c= v1.inNeighbors() &
v2.outNeighbors() c= v1.outNeighbors() & v2.allNeighbors() c= v1.allNeighbors()
proof
  let G1 be _Graph, G2 be Subgraph of G1, v1 be Vertex of G1, v2 be Vertex of
  G2;
  assume
A1: v1 = v2;
  now
    let v be object;
    assume v in v2.inNeighbors();
    then consider e being object such that
A2: e DJoins v,v2,G2 by Th69;
    e DJoins v,v1,G1 by A1,A2,Th72;
    hence v in v1.inNeighbors() by Th69;
  end;
  hence v2.inNeighbors() c= v1.inNeighbors();
  now
    let v be object;
    assume v in v2.outNeighbors();
    then consider e being object such that
A3: e DJoins v2,v,G2 by Th70;
    e DJoins v1,v,G1 by A1,A3,Th72;
    hence v in v1.outNeighbors() by Th70;
  end;
  hence v2.outNeighbors() c= v1.outNeighbors();
    let v be object;
    assume v in v2.allNeighbors();
    then consider e being object such that
A4: e Joins v2,v,G2 by Th71;
    e Joins v1,v,G1 by A1,A4,Lm4;
    hence v in v1.allNeighbors() by Th71;
end;
