reserve Al for QC-alphabet;
reserve i,j,k for Nat,
  A,D for non empty set;
reserve f1,f2 for Element of Funcs(Valuations_in(Al,A),BOOLEAN),
  x,x1,y for bound_QC-variable of Al,
  v,v1 for Element of Valuations_in(Al,A);
reserve ll for CQC-variable_list of k,Al;
reserve p,q,s,t for Element of CQC-WFF(Al),
  J for interpretation of Al,A,
  P for QC-pred_symbol of k,Al,
  r for Element of relations_on A;

theorem Th23:
  J,v |= p => q iff Valid(p, J).v = FALSE or Valid(q, J).v = TRUE
proof
A1: now
A2: now
      assume
A3:   Valid(q, J).v = TRUE;
      assume not J,v |= p => q;
      then Valid(p => q, J).v <> TRUE;
      then Valid(p => q, J).v = FALSE by XBOOLEAN:def 3;
      then Valid('not'(p '&' 'not' q), J).v = FALSE by QC_LANG2:def 2;
      then 'not'(Valid(p '&' 'not' q, J).v) = FALSE by Th10;
      then Valid(p '&' 'not' q, J).v = TRUE by MARGREL1:11;
      then (Valid(p, J).v) '&' (Valid('not' q, J).v) = TRUE by Th12;
      then (Valid(p, J).v) '&' 'not'(Valid(q, J).v) = TRUE by Th10;
      then 'not' (Valid(q, J).v) = TRUE by MARGREL1:12;
      hence contradiction by A3,MARGREL1:11;
    end;
A4: now
      assume Valid(p, J).v = FALSE;
      then (Valid(p, J).v) '&' (Valid('not' q, J).v) = FALSE by MARGREL1:12;
      then Valid(p '&' 'not' q, J).v = FALSE by Th12;
      then 'not'(Valid(p '&' 'not' q, J).v) = TRUE by MARGREL1:11;
      then Valid('not'(p '&' 'not' q), J).v = TRUE by Th10;
      then Valid(p => q, J).v = TRUE by QC_LANG2:def 2;
      hence J,v |= p => q;
    end;
    assume Valid(p, J).v = FALSE or Valid(q, J).v = TRUE;
    hence J,v |= p => q by A4,A2;
  end;
  now
    assume J,v |= p => q;
    then Valid(p => q, J).v = TRUE;
    then Valid('not'(p '&' 'not' q), J).v = TRUE by QC_LANG2:def 2;
    then 'not'(Valid(p '&' 'not' q, J).v) = TRUE by Th10;
    then Valid(p '&' 'not' q, J).v = FALSE by MARGREL1:11;
    then (Valid(p, J).v) '&' (Valid('not' q, J).v) = FALSE by Th12;
    then (Valid(p, J).v) '&' 'not'(Valid(q, J).v) = FALSE by Th10;
    then Valid(p, J).v = FALSE or 'not' (Valid(q, J).v) = FALSE by MARGREL1:12;
    hence Valid(p, J).v = FALSE or Valid(q, J).v = TRUE by MARGREL1:11;
  end;
  hence thesis by A1;
end;
