reserve G for non empty DTConstrStr,
  s for Symbol of G,
  n,m for String of G;
reserve n1,n2,n3 for String of G;
reserve a,b,c for set,
  D for non empty set,
  d for Element of D;

theorem Th16:
  Terminals TotalGrammar D = D
proof
  set T = TotalGrammar D;
A1: the Rules of T = {[D,<*d,D*>] where d is Element of D: d = d} \/ {[D,{}]
  } by Def10;
A2: the carrier of T = succ D by Def10;
  thus Terminals T c= D
  proof
    reconsider b = D as Symbol of T by Def10;
    let a be object;
    assume a in Terminals T;
    then consider s being Symbol of T such that
A3: a = s and
A4: not ex n being FinSequence st s ==> n;
    [D,{}] in {[D,{}]} by TARSKI:def 1;
    then [D,{}] in the Rules of T by A1,XBOOLE_0:def 3;
    then b ==> <*> the carrier of T;
    then s <> D by A4;
    then not s in {D} by TARSKI:def 1;
    hence thesis by A2,A3,XBOOLE_0:def 3;
  end;
  let a be object;
  assume a in D;
  then reconsider a as Element of D;
  reconsider x = a as Symbol of T by A2,XBOOLE_0:def 3;
  assume not thesis;
  then consider n being FinSequence such that
A5: x ==> n;
A6: not a in a;
  then a <> D;
  then [a,n] <> [D,{}] by XTUPLE_0:1;
  then
A7: not [a,n] in {[D,{}]} by TARSKI:def 1;
  [a,n] in the Rules of T by A5;
  then [a,n] in {[D,<*d,D*>]: d = d} by A1,A7,XBOOLE_0:def 3;
  then ex d st [a,n] = [D,<*d,D*>] & d = d;
  then a = D by XTUPLE_0:1;
  hence thesis by A6;
end;
