reserve x,y for set,
  n for Nat;

theorem Th2:
  for f be non empty FinSequence of NAT, X be set holds (Terminals
  (DTConUA(f,X))) c= X & NonTerminals(DTConUA(f,X)) = dom f
proof
  let f be non empty FinSequence of NAT, X be set;
  set A = DTConUA(f,X), D = (dom f) \/ X;
A1: the carrier of A = (Terminals A) \/ (NonTerminals A) by LANG1:1;
  (Terminals A) misses (NonTerminals A) by DTCONSTR:8;
  then
A2: (Terminals A) /\ (NonTerminals A) = {};
  thus Terminals A c= X
  proof
    let x be object;
    assume
A3: x in Terminals A;
    then reconsider xd = x as Element of D by A1,XBOOLE_0:def 3;
    reconsider xa = x as Element of (the carrier of A) by A1,A3,XBOOLE_0:def 3;
A4: now
A5:   rng f c= NAT by FINSEQ_1:def 4;
      assume
A6:   x in dom f;
      then f.x in rng f by FUNCT_1:def 3;
      then reconsider fx = f.x as Nat by A5;
      reconsider a = fx |-> xd as FinSequence of D;
      reconsider a as Element of D* by FINSEQ_1:def 11;
      len a = f.xd by CARD_1:def 7;
      then [xd,a] in REL(f,X) by A6,Def7;
      then xa ==> a by LANG1:def 1;
      then xa in { t where t is Symbol of A: ex n be FinSequence st t ==> n};
      then x in NonTerminals A by LANG1:def 3;
      hence contradiction by A2,A3,XBOOLE_0:def 4;
    end;
    x in (dom f) \/ X by A1,A3,XBOOLE_0:def 3;
    hence thesis by A4,XBOOLE_0:def 3;
  end;
  thus NonTerminals A c= dom f
  proof
    let x be object;
    assume x in NonTerminals A;
    then x in {t where t is Symbol of A: ex n be FinSequence st t ==> n} by
LANG1:def 3;
    then consider t be Symbol of A such that
A7: x = t and
A8: ex n be FinSequence st t ==> n;
    consider n be FinSequence such that
A9: t ==>n by A8;
    [t,n] in the Rules of A by A9,LANG1:def 1;
    then reconsider n as Element of D* by ZFMISC_1:87;
    reconsider t as Element of D;
    [t,n] in REL(f,X) by A9,LANG1:def 1;
    hence thesis by A7,Def7;
  end;
  let x be object;
A10: rng f c= NAT by FINSEQ_1:def 4;
  assume
A11: x in dom f;
  then reconsider xa = x as Symbol of A by XBOOLE_0:def 3;
  f.x in rng f by A11,FUNCT_1:def 3;
  then reconsider fx = f.x as Nat by A10;
  reconsider xd = x as Element of D by A11,XBOOLE_0:def 3;
  reconsider a = fx |-> xd as FinSequence of D;
  reconsider a as Element of D* by FINSEQ_1:def 11;
  len a = f.xd by CARD_1:def 7;
  then [xd,a] in REL(f,X) by A11,Def7;
  then xa ==> a by LANG1:def 1;
  then xa in { t where t is Symbol of A: ex n be FinSequence st t ==> n};
  hence thesis by LANG1:def 3;
end;
