reserve i,j for Nat;
reserve x,y for set;
reserve A for non empty set;
reserve c for Element of StandardStackSystem A;
reserve m for stack of StandardStackSystem A;
reserve X for non empty non void StackSystem;
reserve s,s1,s2 for stack of X;
reserve e,e1,e2 for Element of X;
reserve X for StackAlgebra;
reserve s,s1,s2,s3 for stack of X;
reserve e,e1,e2,e3 for Element of X;

theorem
  ex s1 st emp s1 & s1 in coset s
  proof
    deffunc F(stack of X) = pop $1;
    defpred P[set,stack of X,set] means
    $3 = IFIN($2,the s_empty of X,s,pop $2);
A1: for n being Nat for x being stack of X
    ex y being stack of X st P[n,x,y];
    consider f being sequence of the carrier' of X such that
A2: f.0 = s & for i being Nat holds P[i,f.i,f.(i+1)]
    from RECDEF_1:sch 2(A1);
    defpred Q[Nat] means f.$1 in coset s;
A3: Q[0] by A2,Def17;
A4: now let i; assume
A5:   Q[i];
      f.(i+1) = IFIN(f.i,the s_empty of X,s,pop(f.i)) by A2; then
      (f.i in the s_empty of X implies f.(i+1) = s) &
      (f.i nin the s_empty of X implies f.(i+1) = pop(f.i))
      by MATRIX_7:def 1; then
      f.(i+1) = s or not emp f.i & f.(i+1) = pop(f.i);
      hence Q[i+1] by A5,Def17;
    end;
A6: Q[i] from NAT_1:sch 2(A3,A4);
    consider i,s1 such that
A7: f.i = s1 & (not emp s1 implies f.(i+1) <> pop s1) by Def8;
    take s1;
    f.(i+1) = IFIN(f.i,the s_empty of X,s,pop(f.i)) by A2; then
    (f.i in the s_empty of X implies f.(i+1) = s) &
    (f.i nin the s_empty of X implies f.(i+1) = pop(f.i))
    by MATRIX_7:def 1;
    hence thesis by A7,A6;
  end;
