let A be non empty set ; :: thesis: for v being Element of Valuations_in A
for p, q being Element of CQC-WFF
for J being interpretation of A holds
( J,v |= p => q iff ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) )

let v be Element of Valuations_in A; :: thesis: for p, q being Element of CQC-WFF
for J being interpretation of A holds
( J,v |= p => q iff ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) )

let p, q be Element of CQC-WFF ; :: thesis: for J being interpretation of A holds
( J,v |= p => q iff ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) )

let J be interpretation of A; :: thesis: ( J,v |= p => q iff ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) )
A1: now
A2: now
assume A3: (Valid (q,J)) . v = TRUE ; :: thesis: J,v |= p => q
assume not J,v |= p => q ; :: thesis: contradiction
then (Valid ((p => q),J)) . v <> TRUE by Def12;
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 Th20;
then (Valid ((p '&' ('not' q)),J)) . v = TRUE by MARGREL1:41;
then ((Valid (p,J)) . v) '&' ((Valid (('not' q),J)) . v) = TRUE by Th22;
then ((Valid (p,J)) . v) '&' ('not' ((Valid (q,J)) . v)) = TRUE by Th20;
then 'not' ((Valid (q,J)) . v) = TRUE by MARGREL1:45;
hence contradiction by A3, MARGREL1:41; :: thesis: verum
end;
A4: now
assume (Valid (p,J)) . v = FALSE ; :: thesis: J,v |= p => q
then ((Valid (p,J)) . v) '&' ((Valid (('not' q),J)) . v) = FALSE by MARGREL1:45;
then (Valid ((p '&' ('not' q)),J)) . v = FALSE by Th22;
then 'not' ((Valid ((p '&' ('not' q)),J)) . v) = TRUE by MARGREL1:41;
then (Valid (('not' (p '&' ('not' q))),J)) . v = TRUE by Th20;
then (Valid ((p => q),J)) . v = TRUE by QC_LANG2:def 2;
hence J,v |= p => q by Def12; :: thesis: verum
end;
assume ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) ; :: thesis: J,v |= p => q
hence J,v |= p => q by A4, A2; :: thesis: verum
end;
now
assume J,v |= p => q ; :: thesis: ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE )
then (Valid ((p => q),J)) . v = TRUE by Def12;
then (Valid (('not' (p '&' ('not' q))),J)) . v = TRUE by QC_LANG2:def 2;
then 'not' ((Valid ((p '&' ('not' q)),J)) . v) = TRUE by Th20;
then (Valid ((p '&' ('not' q)),J)) . v = FALSE by MARGREL1:41;
then ((Valid (p,J)) . v) '&' ((Valid (('not' q),J)) . v) = FALSE by Th22;
then ((Valid (p,J)) . v) '&' ('not' ((Valid (q,J)) . v)) = FALSE by Th20;
then ( (Valid (p,J)) . v = FALSE or 'not' ((Valid (q,J)) . v) = FALSE ) by MARGREL1:45;
hence ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) by MARGREL1:41; :: thesis: verum
end;
hence ( J,v |= p => q iff ( (Valid (p,J)) . v = FALSE or (Valid (q,J)) . v = TRUE ) ) by A1; :: thesis: verum