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