reserve Al for QC-alphabet;
reserve a,b,c,d for object,
  i,j,k,m,n for Nat,
  p,q,r for Element of CQC-WFF(Al),
  x,y,y0 for bound_QC-variable of Al,
  X for Subset of CQC-WFF(Al),
  A for non empty set,
  J for interpretation of Al,A,
  v,w for Element of Valuations_in(Al,A),
  Sub for CQC_Substitution of Al,
  f,f1,g,h,h1 for FinSequence of CQC-WFF(Al);
reserve fin,fin1 for FinSequence;
reserve PR,PR1 for FinSequence of [:set_of_CQC-WFF-seq(Al),Proof_Step_Kinds:];
reserve a for Element of A;

theorem
  |- f^<*p => q*> & |- f^<*p*> implies |- f^<*q*>
proof
  assume that
A1: |- f^<*p => q*> and
A2: |- f^<*p*>;
  set f3 = f^<*q*>^<*q*>;
  set f2 = f^<*'not' p*>^<*'not' p*>;
  set f1 = f^<*'not' p*>^<*p*>;
A3: Ant(f1) = f^<*'not' p*> by Th5;
  Suc(f^<*p*>) = p by Th5;
  then
A4: Suc(f^<*p*>) = Suc(f1) by Th5;
A5: 0+1 <= len f2 by Th10;
A6: Ant(f3) = f^<*q*> by Th5;
  then
A7: (Ant(f3)).(len f+1) = q by FINSEQ_1:42;
  len f+1 = len f + len <*q*> by FINSEQ_1:39;
  then len f+1 = len Ant(f3) by A6,FINSEQ_1:22;
  then
A8: len f+1 in dom Ant(f3) by A6,Th10;
  Suc(f3) = q by Th5;
  then
A9: |- f3 by A7,A8,Lm2,Th33;
A10: Ant(f2) = f^<*'not' p*> by Th5;
  len f+1 = len f + len <*'not' p *> by FINSEQ_1:39;
  then len f+1 = len Ant(f2) by A10,FINSEQ_1:22;
  then
A11: len f+1 in dom Ant(f2) by A10,Th10;
A12: Suc(f2) = 'not' p by Th5;
  then
A13: 'not' Suc(f1) = Suc(f2) by Th5;
  (Ant(f2)).(len f+1) = 'not' p by A10,FINSEQ_1:42;
  then
A14: |- f2 by A11,A12,Lm2,Th33;
  Ant(f1) = Ant(f2) by A10,Th5;
  then
A15: |- Ant(f1)^<*'not' Suc(f1)*> by A14,A5,A13,Th3;
  Ant(f^<*p*>) = f by Th5;
  then |- f1 by A2,A3,A4,Th8,Th36;
  then |- Ant(f1)^<*q*> by A15,Th44;
  then |- f^<*'not' p 'or' q*>^<*q*> by A3,A9,Th52;
  then
A16: |- f^<*'not' ('not' 'not' p '&' 'not' q)*>^<*q*> by QC_LANG2:def 3;
  set f4 = f^<*'not' q*>^<*'not' 'not' p '&' 'not' q*>;
  set f5 = Ant(f4)^<*p*>;
  set f6 = Ant(f4)^<*'not' q*>;
A17: Ant(f5) = Ant(f4) & Suc(f5) = p by Th5;
A18: Ant(f6) = Ant(f4) & Suc(f6) = 'not' q by Th5;
A19: Suc(f4) = 'not' 'not' p '&' 'not' q by Th5;
  then |- Ant(f4)^<*'not' 'not' p*> by A16,Th40,Th48;
  then
A20: |- Ant(f4)^<*p*> by Th54;
  |- Ant(f4)^<*'not' q*> by A16,A19,Th41,Th48;
  then |- Ant(f4)^<*p '&' 'not' q*> by A20,A17,A18,Th39;
  then |- f^<*'not' q*>^<*p '&' 'not' q*> by Th5;
  then |- f^<*'not' (p '&' 'not' q)*>^<*q*> by Th48;
  then
A21: |- f^<*p => q*>^<*q*> by QC_LANG2:def 2;
  1 <= len (f^<*p => q*>) by Th10;
  then |- Ant(f^<*p => q*>)^<*q*> by A1,A21,Th45;
  hence thesis by Th5;
end;
