theorem Th27:
  f1 is_left_distributive_wrt g1 & f2 is_left_distributive_wrt g2
  iff |:f1,f2:| is_left_distributive_wrt |:g1,g2:|
proof
  thus f1 is_left_distributive_wrt g1 & f2 is_left_distributive_wrt g2 implies
  |:f1,f2:| is_left_distributive_wrt |:g1,g2:|
  proof
    defpred P[set,set,set] means |:f1,f2:|.($1,|:g1,g2:|.($2,$3)) = |:g1,g2:|.
    (|:f1,f2:|.($1,$2),|:f1,f2:|.($1,$3));
    assume
A1: for a1,b1,c1 holds f1.(a1,g1.(b1,c1)) = g1.(f1.(a1,b1),f1.(a1,c1));
    assume
A2: for a2,b2,c2 holds f2.(a2,g2.(b2,c2)) = g2.(f2.(a2,b2),f2.(a2,c2));
A3: now
      let a1,b1,c1, a2,b2,c2;
      |:f1,f2:|.([a1,a2],|:g1,g2:|.([b1,b2],[c1,c2])) = |:f1,f2:|.([a1,a2]
      ,[g1.(b1,c1),g2.(b2,c2)]) by Th21
        .= [f1.(a1,g1.(b1,c1)),f2.(a2,g2.(b2,c2))] by Th21
        .= [g1.(f1.(a1,b1),f1.(a1,c1)),f2.(a2,g2.(b2,c2))] by A1
        .= [g1.(f1.(a1,b1),f1.(a1,c1)),g2.(f2.(a2,b2),f2.(a2,c2))] by A2
        .= |:g1,g2:|.([f1.(a1,b1),f2.(a2,b2)],[f1.(a1,c1),f2.(a2,c2)]) by Th21
        .= |:g1,g2:|.(|:f1,f2:|.([a1,a2],[b1,b2]),[f1.(a1,c1),f2.(a2,c2)])
      by Th21
        .= |:g1,g2:|.(|:f1,f2:|.([a1,a2],[b1,b2]),|:f1,f2:|.([a1,a2],[c1,c2]
      )) by Th21;
      hence P[[a1,a2],[b1,b2],[c1,c2]];
    end;
    thus for a,b,c being Element of [:D1,D2:] holds P[a,b,c] from AuxCart3(A3);
  end;
  assume
A4: for a,b,c being Element of [:D1,D2:] holds |:f1,f2:|.(a,|:g1,g2:|.(b
  ,c)) = |:g1,g2:|.(|:f1,f2:|.(a,b),|:f1,f2:|.(a,c));
A5: now
    let a1,b1,c1, a2,b2,c2;
    thus [f1.(a1,g1.(b1,c1)),f2.(a2,g2.(b2,c2))] = |:f1,f2:|.([a1,a2],[g1.(b1,
    c1),g2.(b2,c2)]) by Th21
      .= |:f1,f2:|.([a1,a2],|:g1,g2:|.([b1,b2],[c1,c2])) by Th21
      .= |:g1,g2:|.(|:f1,f2:|.([a1,a2],[b1,b2]),|:f1,f2:|.([a1,a2],[c1,c2]))
    by A4
      .= |:g1,g2:|.([f1.(a1,b1),f2.(a2,b2)],|:f1,f2:|.([a1,a2],[c1,c2])) by
Th21
      .= |:g1,g2:|.([f1.(a1,b1),f2.(a2,b2)],[f1.(a1,c1),f2.(a2,c2)]) by Th21
      .= [g1.(f1.(a1,b1),f1.(a1,c1)),g2.(f2.(a2,b2),f2.(a2,c2))] by Th21;
  end;
  thus for a1,b1,c1 holds f1.(a1,g1.(b1,c1)) = g1.(f1.(a1,b1),f1.(a1,c1))
  proof
    set a2 = the Element of D2;
    let a1,b1,c1;
    [f1.(a1,g1.(b1,c1)),f2.(a2,g2.(a2,a2))] = [g1.(f1.(a1,b1),f1.(a1,c1)),
    g2.(f2.(a2,a2),f2.(a2,a2))] by A5;
    hence thesis by XTUPLE_0:1;
  end;
  set a1 = the Element of D1;
  let a2,b2,c2;
  [f1.(a1,g1.(a1,a1)),f2.(a2,g2.(b2,c2))] = [g1.(f1.(a1,a1),f1.(a1,a1)),g2
  .(f2.(a2,b2),f2.(a2,c2))] by A5;
  hence thesis by XTUPLE_0:1;
end;
