reserve A,B,p,q,r,s for Element of LTLB_WFF,
  i,j,k,n for Element of NAT,
  X for Subset of LTLB_WFF,
  f,f1 for FinSequence of LTLB_WFF,
  g for Function of LTLB_WFF,BOOLEAN;

theorem Th17: (VAL g).((con (f^f1))/.(len con (f^f1))) =
  (VAL g).((con f)/.(len con f)) '&' (VAL g).((con f1)/.(len con f1))
  proof
    set fp = (f^f1) | (len f),fk = (f^f1) /^ (len f),v = VAL g;
A1: fk = f1 by FINSEQ_5:37;
A2: for f holds v.kon(f) = v.kon(f|n) '&' v.kon(f/^n)
    proof
      let f;
      defpred P[Nat] means
      (VAL g).kon(f) = (VAL g).kon(f|$1) '&' (VAL g).kon(f/^$1);
      len (f|0) = 0;then
A3:   con (f|0) = <*TVERUM*> by Def2;then
      len con (f|0) = 1 by FINSEQ_1:39;then
A4:   (con (f|0))/.(len (con (f|0))) = TVERUM by FINSEQ_4:16,A3;
A5:   for f,g holds (VAL g).kon(f) = (VAL g).kon(f|1) '&' (VAL g).kon(f/^1)
      proof
        let f,g;
        defpred P[Nat] means for f st len f = $1 holds
        (VAL g).kon(f)= (VAL g).kon(f|1) '&' (VAL g).kon(f/^1);
A6:     len f = len f;
A7:     now
          let n be Nat;
          assume
A8:       P[n];
          thus P[n+1]
          proof
            let f;
            set v = VAL g,fp1 = f|1,fk1 = f/^1,fn = f|n,fn1 = f|(n+1);
            assume
A9:         len f=n+1;
            then A10: n < len f by NAT_1:13;
A11:        len con f = n+1 by Def2,A9;
A12:        1 <= len f by A9,NAT_1:25;
            then A13: len fk1 = len f - 1 by RFINSEQ:def 1
            .= n by A9;
            len fp1 = 1 by A12,FINSEQ_1:59;
            then A14: len con fp1 = 1 by Def2;
A15:        n <= len f by A9,NAT_1:13;
            then A16: len fn = n by FINSEQ_1:59;
A17:        len fn1 = n+1 by FINSEQ_1:59,A9;
            then A18: 1 <= len fn1 by NAT_1:11;
A19:        1 <= n+1 by NAT_1:11;
            then A20: len (fn1/^1) = len fn1 - 1 by A17,RFINSEQ:def 1
            .= n by A17;
            per cases;
            suppose
A21:          n = 0;
              then A22: fk1 = {} by A13;
              len con f = 1 by A21,A9,Def2;
              hence
              v.kon(f) = v.((con fp1)/.1) '&' TRUE by Th13, A21,A9
              .= v.kon(fp1) '&' v.kon(fk1) by A14, A22,Th10,Th4;
            end;
            suppose
A23:          n > 0;
              then A24: 1 <= len fn by NAT_1:25,A16;
A25:          1 <= n by A23,NAT_1:25;
              len con fn = len fn by A23,A16,Def2;
              then (con f)/.n = kon(fn) by A16,Th13,A25,A15;
              then kon(f) = kon(fn) '&&' f/.(n+1) by Th7,A25,A10,A11;
              then A26: v.kon(f) = v.kon(fn) '&' v.(f/.(n+1)) by LTLAXIO1:31
              .= v.kon(fn|1) '&' v.kon(fn/^1) '&' v.(f/.(n+1)) by A8,A16
              .= v.((con fp1)/.(len (con (fn|1)))) '&' v.kon(fn/^1) '&'
              v.(f/.(n+1)) by A25,FINSEQ_1:82
              .= v.kon(fp1) '&' v.kon(fn/^1) '&' v.(f/.(n+1))
              by A25,FINSEQ_1:82
              .= v.kon(fp1) '&' (v.kon(fn/^1) '&' v.(f/.(n+1)))
              .= v.kon(fp1) '&' v.(kon(fn/^1) '&&' f/.(n+1)) by LTLAXIO1:31;
              per cases by A23,NAT_1:25;
              suppose
A27:            n = 1;
                then A28: 1 in dom fk1 by A13,FINSEQ_3:25;
A29:            len con fk1 = 1 by Def2,A13,A27;
                thus v.kon(f) = v.((con f)/.1 '&&' f/.(1+1)) by Th7, A27,A9,A11
                .= v.((con fp1)/.1 '&&' f/.(1+1)) by Th13, A27,A9
                .= v.((con fp1)/.1) '&' v.(f/.(1+1)) by LTLAXIO1:31
                .= v.((con fp1)/.1) '&' v.(fk1/.1) by FINSEQ_5:27,A28
                .= v.kon(fp1) '&' v.kon(fk1) by A14,A29,Th6, A27,A13;
              end;
              suppose
A30:            1 < n;
A31:            fn1/^1 = fk1|n
                proof
                  set f1 = fk1|n, g = fn1/^1;
A32:              len f1 = len g by A20,FINSEQ_1:59, A13;
                  now
                    let x be Nat;
A33:                dom f1 c= dom fk1 by FINSEQ_5:18;
                    assume
A34:                x in dom f1;
                    then A35: x in dom g by FINSEQ_3:29,A32;
                    x <= len f1 by A34,FINSEQ_3:25;
                    then A36: x <= n by FINSEQ_1:59, A13;
                    hence f1 . x = fk1.x by FINSEQ_3:112
                    .= f.(x+1) by RFINSEQ:def 1, A33,A34,A12
                    .= fn1.(x+1) by FINSEQ_3:112, A36,XREAL_1:6
                    .= g . x by RFINSEQ:def 1,A18,A35;
                  end;
                  hence thesis by FINSEQ_2:9,A32;
                end;
A37:            n +(-1) > 1 + (-1) by A30,XREAL_1:8;
                then A38: n -' 1 + 1 = n - 1+1 by XREAL_0:def 2
                .= n;
                len con fk1 = len fk1 by A13, A30,Def2;
                then A39: len con fk1 = len f -' 1 by RFINSEQ:29
                .= n by NAT_D:34, A9;
A40:            n in dom (fn1/^1) by FINSEQ_3:25,A30, A20;
A41:            n - 1 > 0 by A37;
                then n -'1 >0 by XREAL_0:def 2;
                then A42: 1 <= n-'1 by NAT_1:25;
A43:            f/.(n+1) = f.(n+1) by A19,A9,FINSEQ_4:15
                .= fn1.(n+1) by FINSEQ_3:112
                .= (fn1/^1).n by RFINSEQ:def 1,A40, A19,A17
                .= (fn1/^1)/.(n -' 1 + 1) by A38,PARTFUN1:def 6,A40;
A44:            (-1)+n < n by XREAL_1:30;
                then A45: n -' 1 < len (fn1/^1) by A20,XREAL_0:def 2,A41;
A46:            len (fn/^1) = n - 1 by RFINSEQ:def 1,A24,A16;
                then A47: len con (fn/^1) = len (fn/^1) by A37,Def2
                .= n -' 1 by XREAL_0:def 2,A46;
                then len con (fn/^1) = n - 1 by A46, XREAL_0:def 2;
                then A48: 1 <= len con (fn/^1) by A37,NAT_1:25;
A49:            len (fn/^1) = n -' 1 by XREAL_0:def 2,A46;
A50:            (fn1/^1)|(n -' 1) = fn/^1
                proof
                  set f1 = (fn1/^1)|(n -' 1), g = fn/^1;
A51:              len f1 = len g by A49,FINSEQ_1:59, A45;
                  now
A52:                dom f1 c= dom (fn1/^1) by FINSEQ_5:18;
                    let x be Nat;
A53:                n <= n+1 by XREAL_1:31;
                    assume
A54:                x in dom f1;
                    then A55: x in dom g by FINSEQ_3:29,A51;
                    x <= len f1 by A54,FINSEQ_3:25;
                    then A56: x <= n -' 1 by FINSEQ_1:59, A45;
                    then A57: x+1 <= n by XREAL_1:6,A38;
                    thus f1 . x = (fn1/^1).x by FINSEQ_3:112,A56
                    .= fn1.(x+1) by RFINSEQ:def 1, A52,A54,A18
                    .= f.(x+1) by FINSEQ_3:112, A53,XXREAL_0:2,A57
                    .= fn.(x+1) by FINSEQ_3:112, A56,XREAL_1:6,A38
                    .= g . x by RFINSEQ:def 1, A25,A16,A55;
                  end;
                  hence thesis by FINSEQ_2:9,A51;
                end;
                len con (fn/^1) = len (fn/^1) by A46, A37,Def2;then
                kon(fn/^1) '&&' f/.(n+1) = (con (fn1/^1))/.(n -' 1) '&&'
                f/.(n+1) by A47,Th13,A48, A46, A44,A20,A50
                .= (con (fn1/^1))/.(n -' 1 + 1) by Th7,A45,A42,A43
                .= (con fk1)/.(len con fk1) by A39, A13,A25,Th13,A31,A38;
                hence v.kon(f) = v.kon(fp1) '&' v.kon(fk1) by A26;
              end;
            end;
          end;
        end;
A58:    P[0]
        proof
          let f;
          set v = VAL g,fp1 = f|1,fk1 = f/^1;
          assume
A59:      len f = 0;
          then len fk1 = 0 by Th2;
          then A60: fk1 = {};
          f = {} & fp1 = f by A59, FINSEQ_1:58;
          hence v.kon(f) = v.kon(fp1) '&' v.kon(fk1) by A60;
        end;
        for n being Nat holds P[n] from NAT_1:sch 2(A58,A7);
        hence thesis by A6;
      end;
A61:  for n being Nat st P[n] holds P[n + 1]
      proof
        let n be Nat;
        assume
A62:    P[n];
        set v = VAL g,fe = f/^n,fs1 = f|(n+1),fs = f|n,fe1 = f/^(n+1);
        per cases;
        suppose
A63:      len f = 0;
          then A64: fe1 = f by Th2;
A65:      f = {} by A63;
          then fs1 = {} by FINSEQ_1:58,A63;
          hence v.kon(f) = v.kon(fs1) '&' v.kon(fe1) by A64,A65;
        end;
        suppose
A66:      len f > 0;
          then len f >=1 by NAT_1:25;
          then A67: len (f|1) = 1 by FINSEQ_1:59;
          then A68: 1 in dom (f|1) by FINSEQ_3:25;
A69:      len fs1 > 0 by A66,Th1;
          then len fs1 >= 1 by NAT_1:25;
          then A70: 1 in dom fs1 by FINSEQ_3:25;
A71:      len con (f|1) = 1 by A67,Def2;
A72:      1 <= n+1 by XREAL_1:31;
          per cases by A69,NAT_1:25;
          suppose
A73:        len fs1 = 1;
            then len con fs1 = 1 by Def2;
            then A74: kon(fs1) = fs1/.1 by Th6,A69
            .= f/.1 by FINSEQ_4:70,A70
            .= (f|1)/.1 by FINSEQ_4:70,A68
            .= kon(f|1) by A71,Th6,A67;
            per cases;
            suppose
              n+1 <= len f;
              then len fs1 = n+1 by FINSEQ_1:59;
              hence v.kon(f) = v.kon(fs1) '&' v.kon(fe1) by A73,A5;
            end;
            suppose
              n+1 > len f;
              then A75: fe1 = {} by RFINSEQ:def 1;
              then A76: len fe1 = 0;
              f = fs1^fe1 by RFINSEQ:8;
              then len f = len fs1 + len fe1 by FINSEQ_1:22
              .= 1 by A73,A76;
              then f|1 = f by FINSEQ_1:58;
              hence v.kon(f) = v.kon(f|1) '&' TRUE
              .= v.kon(fs1) '&' v.kon(fe1) by A74,Th10,A75,Th4;
            end;
          end;
          suppose
A77:        len fs1 > 1;
            per cases;
            suppose
A78:          n+1> len f;
              then A79: fe1 = 0 by RFINSEQ:def 1;
              fs1 = f by FINSEQ_1:58,A78;
              hence v.kon(f) = v.kon(fs1) '&' TRUE
              .= v.kon(fs1) '&' v.kon(fe1) by A79,Th10,Th4;
            end;
            suppose
A80:          n+1 <= len f;
              then A81: len fs1 = n+1 by FINSEQ_1:59;
              then A82: n+1 in dom fs1 by FINSEQ_3:25,A72;
A83:          n+1 = len con fs1 & n < len fs1 by A81,Def2, XREAL_1:145;
A84:          n+1+(-n) <= len f + (-n) by A80,XREAL_1:6;
A85:          len fe = len f -' n by RFINSEQ:29
              .= len f - n by XREAL_0:def 2, A84;
              then A86: len (fe|1) = 1 by A84,FINSEQ_1:59;
              then A87: 1 in dom (fe|1) by FINSEQ_3:25;
A88:          1 in dom fe by A85, A84,FINSEQ_3:25;
              len con (fe|1) = 1 by A86,Def2;
              then A89: kon(fe|1) = (fe|1)/.1 by Th6,A86
              .= fe/.1 by A87,FINSEQ_4:70
              .= f/.(n+1) by FINSEQ_5:27,A88
              .= fs1/.(n+1) by FINSEQ_4:70,A82;
A90:          (f/^n)/^1 = fe1 by FINSEQ_6:81;
A91:          n+1 + (-1) > 1 + (-1) by A77,A81,XREAL_1:8;
              then A92: n >= 1 by NAT_1:25;
A93:          n <= n+1 by XREAL_1:31;
              then len fs = n by XXREAL_0:2,A80,FINSEQ_1:59;
              then A94: len con fs = n by Def2, A91;
A95:          kon(f|n) = (con (fs1|n))/.(len con fs) by FINSEQ_5:77,A93
              .= (con fs1)/.n by A94,Th13,A93,A81,A92;
A96:          1 <= n by NAT_1:25, A91;
              thus v.kon(f)
              = v.kon(f|n) '&' (v.kon(fe|1) '&' v.kon(fe/^1)) by A5,A62
              .= v.kon(f|n) '&' v.kon(fe|1) '&' v.kon(fe1) by A90
              .= v.(kon(f|n) '&&' kon(fe|1)) '&' v.kon(fe1) by LTLAXIO1:31
              .= v.kon(fs1) '&' v.kon(fe1) by A83,Th7,A96,A95,A89;
            end;
          end;
        end;
      end;
      f/^0 = f by FINSEQ_5:28;
      then (VAL g).kon(f) = TRUE '&' (VAL g).kon(f/^0)
      .= (VAL g).kon(f|0) '&' (VAL g).kon(f/^0) by A4,Th4;
      then A97: P[0];
      for n being Nat holds P[n] from NAT_1:sch 2(A97,A61);
      hence thesis;
    end;
    Seg len f c= dom f by FINSEQ_1:def 3;
    then fp = f|len f by FINSEQ_6:11
    .= f by FINSEQ_1:58;
    hence v.kon(f^f1) = v.kon(f) '&' v.kon(f1) by A1,A2;
  end;
