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 Th47: p => q => (p => ('not' r) => (p => ('not' (q => r)))) is ctaut
  proof
   let g;
   set v = VAL g;
A1: v.r = 1 or v.r = 0 by XBOOLEAN:def 3;
A2: v.q = 1 or v.q = 0 by XBOOLEAN:def 3;
A3: v.(p => ('not' r) => (p => ('not' (q => r))))
    = v.(p => ('not' r)) => v.(p => ('not' (q => r))) by LTLAXIO1:def 15
    .= (v.p => v.('not' r)) => v.(p => ('not' (q => r))) by LTLAXIO1:def 15
    .= (v.p => v.('not' r)) => (v.p => v.('not' (q => r))) by LTLAXIO1:def 15
    .= (v.p => (v.r => v.tf)) => (v.p => v.('not' (q => r))) by LTLAXIO1:def 15
    .= (v.p => (v.r => v.tf)) => (v.p => (v.(q => r) => v.tf))
    by LTLAXIO1:def 15
    .= (v.p => (v.r => v.tf)) => (v.p => ((v.q => v.r) => v.tf))
    by LTLAXIO1:def 15;
A4: v.tf = 0 & v.(p => q) = v.p => v.q by LTLAXIO1:def 15;
    v.p = 1 or v.p = 0 by XBOOLEAN:def 3;
    hence v.(p => q => (p => ('not' r) => (p => ('not' (q => r)))))
    = 1 by A1,A2,A4,LTLAXIO1:def 15,A3;
  end;
