
theorem Th20:
  for L being domRing, p, q being Polynomial of L holds Roots (p*'
  q) = Roots p \/ Roots q
proof
  let L be domRing, p, q being Polynomial of L;
  now
    let x be object;
    hereby
      assume
A1:   x in Roots (p*'q);
      then reconsider a = x as Element of L;
      a is_a_root_of p*'q by A1,POLYNOM5:def 10;
      then eval(p*'q,a) = 0.L;
      then
A2:   eval(p,a) * eval(q,a) = 0.L by POLYNOM4:24;
      per cases by A2,VECTSP_2:def 1;
      suppose
        eval(p,a) = 0.L;
        then a is_a_root_of p;
        then a in Roots p by POLYNOM5:def 10;
        hence x in Roots p \/ Roots q by XBOOLE_0:def 3;
      end;
      suppose
        eval(q,a) = 0.L;
        then a is_a_root_of q;
        then a in Roots q by POLYNOM5:def 10;
        hence x in Roots p \/ Roots q by XBOOLE_0:def 3;
      end;
    end;
    assume
A3: x in Roots p \/ Roots q;
    per cases by A3,XBOOLE_0:def 3;
    suppose
A4:   x in Roots p;
      then reconsider a = x as Element of L;
      a is_a_root_of p by A4,POLYNOM5:def 10;
      then eval(p,a) = 0.L;
      then eval(p,a) * eval(q,a) = 0.L;
      then eval(p*'q,a) = 0.L by POLYNOM4:24;
      then a is_a_root_of p*'q;
      hence x in Roots (p*'q) by POLYNOM5:def 10;
    end;
    suppose
A5:   x in Roots q;
      then reconsider a = x as Element of L;
      a is_a_root_of q by A5,POLYNOM5:def 10;
      then eval(q,a) = 0.L;
      then eval(p,a) * eval(q,a) = 0.L;
      then eval(p*'q,a) = 0.L by POLYNOM4:24;
      then a is_a_root_of p*'q;
      hence x in Roots (p*'q) by POLYNOM5:def 10;
    end;
  end;
  hence thesis by TARSKI:2;
end;
