
theorem
  for X be set for Y,Z be finite Subset-Family of X st Z is
  in_general_position & Y c= Z holds Y is in_general_position
proof
  let X be set;
  let Y,Z be finite Subset-Family of X such that
A1: Z is in_general_position and
A2: Y c= Z;
A3: not {} in Components(Z) by A1;
  not {} in Components(Y)
  proof
    deffunc T(set) = TRUE;
    consider p be FinSequence of bool X such that
A4: len p = card Y and
A5: rng p = Y and
A6: Components(Y) = { Intersect (rng MergeSequence(p,q)) where q is
    FinSequence of BOOLEAN : len q = len p } by Def2;
A7: p is one-to-one by A4,A5,FINSEQ_4:62;
    then
A8: rng p = dom (p") by FUNCT_1:33;
    consider p1 be FinSequence of bool X such that
A9: len p1 = card Z and
A10: rng p1 = Z and
A11: Components(Z) = { Intersect (rng MergeSequence(p1,q)) where q is
    FinSequence of BOOLEAN : len q = len p1 } by Def2;
    defpred C[set] means p1.$1 in rng p;
    assume {} in Components(Y);
    then consider q be FinSequence of BOOLEAN such that
A12: {} = Intersect (rng MergeSequence(p,q)) and
A13: len q = len p by A6;
    deffunc F(set) = (q*p"*p1).$1;
A14: dom p = rng (p") by A7,FUNCT_1:33;
A15: for i be Nat st i in Seg len p1 holds (C[i] implies F(i) in BOOLEAN)
    & (not C[i] implies T(i) in BOOLEAN)
    proof
      let i be Nat;
      assume i in Seg len p1;
      then
A16:  i in dom p1 by FINSEQ_1:def 3;
      thus p1.i in rng p implies (q*p"*p1).i in BOOLEAN
      proof
        assume
A17:    p1.i in rng p;
        rng (p") = dom q by A13,A14,FINSEQ_3:29;
        then p1.i in dom (q*p") by A8,A17,RELAT_1:27;
        then
A18:    (q*p").(p1.i) in rng (q*p") by FUNCT_1:def 3;
        dom (q*p") c= rng p by A8,RELAT_1:25;
        then rng (q*p") = rng (q*p"*p1) by A2,A5,A10,RELAT_1:28,XBOOLE_1:1;
        then (q*p"*p1).i in rng (q*p"*p1) by A16,A18,FUNCT_1:13;
        hence thesis;
      end;
      thus thesis;
    end;
    consider q1 be FinSequence of BOOLEAN such that
A19: len q1 = len p1 and
A20: for i be Nat st i in Seg len p1 holds (C[i] implies q1.i = F(i))
    & (not C[i] implies q1.i = T(i)) from SeqLambda1C(A15);
A21: p1 is one-to-one by A9,A10,FINSEQ_4:62;
    then
A22: rng p1 = dom (p1") by FUNCT_1:33;
    rng MergeSequence(p,q) c= rng MergeSequence(p1,q1)
    proof
      let z be object;
      assume z in rng MergeSequence(p,q);
      then consider i be Nat such that
A23:  i in dom MergeSequence(p,q) and
A24:  MergeSequence(p,q).i = z by FINSEQ_2:10;
      i in Seg len MergeSequence(p,q) by A23,FINSEQ_1:def 3;
      then i in Seg len p by Def1;
      then
A25:  i in dom p by FINSEQ_1:def 3;
      then
A26:  i in dom (p1"*p) by A2,A5,A10,A22,RELAT_1:27;
      then (p1"*p).i in rng (p1"*p) by FUNCT_1:def 3;
      then
A27:  (p1"*p).i in rng (p1") by FUNCT_1:14;
      then
A28:  (p1"*p).i in dom p1 by A21,FUNCT_1:33;
      then reconsider j = (p1"*p).i as Element of NAT;
      p1.j = (p1*(p1"*p)).i by A26,FUNCT_1:13
        .= (p1*p1"*p).i by RELAT_1:36
        .= ((id rng p1)*p).i by A21,FUNCT_1:39
        .= p.i by A2,A5,A10,RELAT_1:53;
      then
A29:  p1.j in rng p by A25,FUNCT_1:def 3;
      j in Seg len p1 by A28,FINSEQ_1:def 3;
      then
A30:  q1.j = (q*p"*p1).((p1"*p).i) by A20,A29
        .= (q*p"*p1*(p1"*p)).i by A26,FUNCT_1:13
        .= (q*p"*(p1*(p1"*p))).i by RELAT_1:36
        .= (q*p"*(p1*p1"*p)).i by RELAT_1:36
        .= (q*p"*((id rng p1)*p)).i by A21,FUNCT_1:39
        .= (q*p"*p).i by A2,A5,A10,RELAT_1:53
        .= (q*(p"*p)).i by RELAT_1:36
        .= (q*(id dom p)).i by A7,FUNCT_1:39
        .= (q*(id dom q)).i by A13,FINSEQ_3:29
        .= q.i by RELAT_1:52;
A31:  j in dom p1 by A21,A27,FUNCT_1:33;
A32:  now
        per cases by XBOOLEAN:def 3;
        suppose
A33:      q.i = TRUE;
          hence z = p.i by A24,Th2
            .= ((id rng p1)*p).i by A2,A5,A10,RELAT_1:53
            .= (p1*p1"*p).i by A21,FUNCT_1:39
            .= (p1*(p1"*p)).i by RELAT_1:36
            .= p1.j by A26,FUNCT_1:13
            .= MergeSequence(p1,q1).j by A30,A33,Th2;
        end;
        suppose
A34:      q.i = FALSE;
          hence z = X\p.i by A24,A25,Th3
            .= X\((id rng p1)*p).i by A2,A5,A10,RELAT_1:53
            .= X\(p1*p1"*p).i by A21,FUNCT_1:39
            .= X\(p1*(p1"*p)).i by RELAT_1:36
            .= X\p1.j by A26,FUNCT_1:13
            .= MergeSequence(p1,q1).j by A31,A30,A34,Th3;
        end;
      end;
      j in dom MergeSequence(p1,q1) by A28,Th1;
      hence thesis by A32,FUNCT_1:def 3;
    end;
    then {} = Intersect (rng MergeSequence(p1,q1)) by A12,SETFAM_1:44
,XBOOLE_1:3;
    hence contradiction by A3,A11,A19;
  end;
  hence thesis;
end;
