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 Th27:
  core push(e,s) = core s
  proof set R = ConstructionRed X;
    set A = the carrier' of X;
A1: emp core s by Def19;
    consider t being the carrier' of X-valued RedSequence of R such that
A2: t.1 = s & t.len t = core s and
A3: for i st 1 <= i & i < len t holds not emp t/.i & t/.(i+1) = pop(t/.i)
    by Def19;
    not emp push(e,s) & pop push(e,s) = s by Def11,Def12; then
    [push(e,s),s] in R by Def18; then
    reconsider u = <*push(e,s), s*> as RedSequence of R by REWRITE1:7;
    u.2 = s & len u = 2 by FINSEQ_1:44; then
    reconsider v = u$^t as RedSequence of R by A2,REWRITE1:8;
A4: v = <*push(e,s)*>^t by REWRITE1:2; then
A5: v.1 = push(e,s) by FINSEQ_1:41; then
    reconsider v as A-valued RedSequence of R by Th23;
A6: len <*push(e,s)*> = 1 by FINSEQ_1:40; then
A7: len v = 1 + len t by A4,FINSEQ_1:22;
    len t in dom t by FINSEQ_5:6; then
A8: v.len v = t.len t by A4,A6,A7,FINSEQ_1:def 7;
    now let i; assume
A9:   1 <= i & i < len v;
      i in dom v & i+1 in dom v by A9,MSUALG_8:1; then
A10:   v/.i = v.i & v/.(i+1) = v.(i+1) by PARTFUN1:def 6;
      consider j such that
A11:   i = 1+j by A9,NAT_1:10;
A12:   j < len t by A7,A9,A11,XREAL_1:6;
      per cases by A9,XXREAL_0:1;
      suppose
A13:     i = 1;
        hence not emp v/.i by A5,A10,Def12;
        1 in dom t by FINSEQ_5:6;
        hence v/.(i+1) = t.1 by A4,A6,A10,A13,FINSEQ_1:def 7
        .= pop(v/.i) by A13,A2,A5,A10,Def11;
      end;
      suppose i > 1; then
A14:     j >= 1 & j in NAT by A11,NAT_1:13,ORDINAL1:def 12; then
        j in dom t & i in dom t by A11,A12,MSUALG_8:1; then
        t.j = v.i & t/.j = t.j & t.i = v.(i+1) & t/.i = t.i
        by A4,A6,A11,FINSEQ_1:def 7,PARTFUN1:def 6;
        hence not emp v/.i & v/.(i+1) = pop(v/.i) by A3,A10,A11,A12,A14;
      end;
    end;
    hence thesis by A1,A2,A5,A8,Def19;
  end;
