 reserve L for non empty LattStr;
 reserve v64,v65,v66,v67,v103,v3,v102,v101,v100,v2,v1,v0 for Element of L;

theorem JoinAssoc:
L is join-absorbing &
(for v0,v2,v1 holds (v0"/\"(v1"\/"v2))=((v2"/\"v0)"\/"(v1"/\"v0)))
implies for v0,v1,v2 holds (v0"\/"v1)"\/"v2=v0"\/"(v1"\/"v2)
proof
assume A2: L is join-absorbing;
assume A3: for v0,v2,v1 holds (v0"/\"(v1"\/"v2))=((v2"/\"v0)"\/"(v1"/\"v0));

A7: for v65,v66 holds v65=((v66"/\"v65)"\/"(v65"/\"v65))
proof let v65,v66;
(v65"/\"(v65"\/"v66))=v65 by A2;
hence thesis by A3;
end;

A11: for v1,v0 holds ((v0"/\"v1)"/\"v1)=(v0"/\"v1)
proof let v1,v0;
((v0"/\"v1)"\/"(v1"/\"v1))=v1 by A7;
hence thesis by A2;
end;

A14: for v64,v2,v1 holds
 ((v2"/\"(v64"/\"(v1"\/"v2)))"\/"(v1"/\"(v64"/\"(v1"\/"v2))))=
 (v64"/\"(v1"\/"v2))
proof let v64,v2,v1;
((v64"/\"(v1"\/"v2))"/\"(v1"\/"v2))=
((v2"/\"(v64"/\"(v1"\/"v2)))"\/"(v1"/\"(v64"/\"(v1"\/"v2)))) by A3;
hence thesis by A11;
end;

A18: for v65,v64,v0 holds
 ((v0"/\"v64)"\/"(v65"/\"v64))=(v64"/\"(v65"\/"(v0"/\"v64)))
proof let v65,v64,v0;
((v0"/\"v64)"/\"v64)=(v0"/\"v64) by A11;
hence thesis by A3;
end;

A22: for v65,v1,v66 holds
 (v66"\/"(v65"/\"(v66"\/"v1)))=((v66"\/"v1)"/\"(v65"\/"v66))
proof let v65,v1,v66;
(v66"/\"(v66"\/"v1))=v66 by A2;
hence thesis by A3;
end;

A25: for v0,v2,v1 holds ((v2"/\"v0)"/\"(v0"/\"(v1"\/"v2)))=(v2"/\"v0)
proof let v0,v2,v1;
((v2"/\"v0)"\/"(v1"/\"v0))=(v0"/\"(v1"\/"v2)) by A3;
hence thesis by A2;
end;

A29: for v66,v1,v64 holds
 (v64"/\"((v64"\/"v1)"/\"(v66"\/"v64)))=(v64"/\"(v64"\/"v1))
proof let v66,v1,v64;
(v64"/\"(v64"\/"v1))=v64 by A2;
hence thesis by A25;
end;

A31: for v66,v1,v64 holds (v64"/\"((v64"\/"v1)"/\"(v66"\/"v64)))=v64
proof let v66,v1,v64;
(v64"/\"(v64"\/"v1))=v64 by A2;
hence thesis by A29;
end;

A35: for v65,v64,v66 holds (v65"/\"(v66"\/"v64))=(v65"/\"(v66"\/"(v64"/\"v65)))
proof let v65,v64,v66;
((v64"/\"v65)"\/"(v66"/\"v65))=(v65"/\"(v66"\/"v64)) by A3;
hence thesis by A18;
end;

A40: for v64,v0 holds (v64"/\"v64)=(v64"/\"((v0"/\"v64)"\/"v64))
proof let v64,v0;
((v0"/\"v64)"\/"(v64"/\"v64))=v64 by A7;
hence thesis by A35;
end;

A49: for v64,v65 holds ((v64"/\"v64)"\/"((v65"/\"v64)"/\"v64))=(v64"/\"v64)
proof let v64,v65;
(v64"/\"((v65"/\"v64)"\/"v64))=((v64"/\"v64)"\/"((v65"/\"v64)"/\"v64)) by A3;
hence thesis by A40;
end;

A51: for v64,v65 holds ((v64"/\"v64)"\/"(v65"/\"v64))=(v64"/\"v64)
proof let v64,v65;
((v65"/\"v64)"/\"v64)=(v65"/\"v64) by A11;
hence thesis by A49;
end;

A64: for v64,v65 holds (v64"/\"(v65"\/"v64))=(v64"/\"v64)
proof let v64,v65;
((v64"/\"v64)"\/"(v65"/\"v64))=(v64"/\"(v65"\/"v64)) by A3;
hence thesis by A51;
end;

A66: for v64,v65 holds (v64"/\"(v65"\/"v64))=v64
proof let v64,v65;
(v64"/\"v64)=v64 by A2,A3,Lemma1;
hence thesis by A64;
end;

A72: for v0,v1 holds (v0"\/"(v1"/\"v0))=v0
proof let v0,v1;
(v0"\/"(v1"/\"v0))=v0"\/"(v0"/\"v1) by A2,A3,MeetCom .= v0 by A2,A3,MeetAbsor;
hence thesis;
end;

A76: for v1,v0 holds ((v0"/\"v1)"\/"v1)=v1
proof let v1,v0;
(v1"/\"v1)=v1 by A2,A3,Lemma1;
hence thesis by A7;
end;

A91: for v2,v0 holds (v0"/\"(v2"\/"v2))=(v2"/\"v0)
proof let v2,v0;
((v2"/\"v0)"\/"(v2"/\"v0))=(v0"/\"(v2"\/"v2)) by A3;
hence thesis by JoinIdem,A2,A3;
end;

A93: for v2,v0 holds (v0"/\"v2)=(v2"/\"v0)
proof let v2,v0;
(v2"\/"v2)=v2 by JoinIdem,A2,A3;
hence thesis by A91;
end;

A97: for v66,v65,v1 holds
 ((v66"/\"(v1"\/"v65))"\/"v65)=((v1"\/"v65)"/\"(v65"\/"v66))
proof let v66,v65,v1;
(v65"/\"(v1"\/"v65))=v65 by A66;
hence thesis by A3;
end;

A101: for v1,v65 holds ((v65"\/"v1)"\/"v65)=(v65"\/"v1)
proof let v1,v65;
(v65"/\"(v65"\/"v1))=v65 by A2;
hence thesis by A72;
end;

A111: for v64,v65 holds (v64"/\"(v65"/\"v64))=(v65"/\"v64)
proof let v64,v65;
(v64"/\"(v65"/\"v64))=v64"/\"(v64"/\"v65) by A2,A3,MeetCom
  .= v64"/\"v64"/\"v65 by MeetAssoc,A2,A3 .= v64"/\"v65 by A2,A3,Lemma1
  .=v65"/\"v64 by MeetCom,A2,A3;
hence thesis;
end;

A115: for v1,v64 holds
 ((v64"/\"((v64"\/"v1)"/\"(v64"\/"v64)))"\/"v64)=((v64"\/"v1)"/\"(v64"\/"v64))
proof let v1,v64;
(v64"/\"((v64"\/"v1)"/\"(v64"\/"v64)))=v64 by A31;
hence thesis by A14;
end;

A117: for v1,v64 holds
 ((v64"/\"((v64"\/"v1)"/\"v64))"\/"v64)=((v64"\/"v1)"/\"(v64"\/"v64))
proof let v1,v64;
(v64"\/"v64)=v64 by JoinIdem,A2,A3;
hence thesis by A115;
end;

A119: for v1,v64 holds
  (((v64"\/"v1)"/\"v64)"\/"v64)=((v64"\/"v1)"/\"(v64"\/"v64))
proof let v1,v64;
(v64"/\"((v64"\/"v1)"/\"v64))=((v64"\/"v1)"/\"v64) by A111;
hence thesis by A117;
end;

A121: for v1,v64 holds v64=((v64"\/"v1)"/\"(v64"\/"v64))
proof let v1,v64;
(((v64"\/"v1)"/\"v64)"\/"v64)=v64 by A76;
hence thesis by A119;
end;

A123: for v1,v64 holds v64=((v64"\/"v1)"/\"v64)
proof let v1,v64;
(v64"\/"v64)=v64 by JoinIdem,A2,A3;
hence thesis by A121;
end;

A134: for v65,v1,v64 holds (v64"/\"(v65"\/"v64))=(v64"/\"(v65"\/"(v64"\/"v1)))
proof let v65,v1,v64;
((v64"\/"v1)"/\"v64)=v64 by A123;
hence thesis by A35;
end;

A136: for v65,v1,v64 holds v64=(v64"/\"(v65"\/"(v64"\/"v1)))
proof let v65,v1,v64;
(v64"/\"(v65"\/"v64))=v64 by A66;
hence thesis by A134;
end;

A141: for v65,v66,v64 holds
 (v64"\/"((v64"\/"v66)"/\"v65))=((v64"\/"v66)"/\"(v65"\/"v64))
proof let v65,v66,v64;
(v65"/\"(v64"\/"v66))=((v64"\/"v66)"/\"v65) by A93;
hence thesis by A22;
end;

A150: for v1,v66,v64 holds (v64"/\"((v64"\/"v66)"\/"v1))=v64
proof let v1,v66,v64;
(((v64"\/"v66)"\/"v1)"\/"(v64"\/"v66))=((v64"\/"v66)"\/"v1) by A101;
hence thesis by A136;
end;

A160: for v66,v1,v64 holds (v64"\/"v66)=(((v64"\/"v1)"\/"v66)"/\"(v66"\/"v64))
proof let v66,v1,v64;
(v64"/\"((v64"\/"v1)"\/"v66))=v64 by A150;
hence thesis by A97;
end;

A176: for v64,v66,v65 holds ((v65"\/"v66)"\/"v64)=(v64"\/"(v66"\/"v65))
proof let v64,v66,v65;
(v64"\/"(v65"\/"v66))=((v65"\/"v66)"\/"v64) by A2,A3,JoinCom;
hence thesis by A2,A3,JoinCom;
end;

A180: for v66,v65,v64 holds
((v66"\/"v64)"/\"((v64"\/"v65)"\/"v66))=(v64"\/"v66)
proof let v66,v65,v64;
(((v64"\/"v65)"\/"v66)"/\"(v66"\/"v64))=
((v66"\/"v64)"/\"((v64"\/"v65)"\/"v66)) by A93;
hence thesis by A160;
end;

A184: for v65,v1,v0 holds
 ((v0"\/"v1)"\/"(v0"\/"v65))=
 (((v0"\/"v1)"\/"v65)"/\"((v65"\/"v0)"\/"(v0"\/"v1)))
proof let v65,v1,v0;
(((v0"\/"v1)"\/"v65)"/\"(v65"\/"v0))=(v0"\/"v65) by A160;
hence thesis by A141;
end;

A186: for v65,v1,v0 holds ((v0"\/"v1)"\/"(v0"\/"v65))=(v65"\/"(v0"\/"v1))
proof let v65,v1,v0;
(((v0"\/"v1)"\/"v65)"/\"((v65"\/"v0)"\/"(v0"\/"v1)))=
(v65"\/"(v0"\/"v1)) by A180;
hence thesis by A184;
end;

A190: for v65,v66,v64 holds
((v64"\/"v66)"\/"(v65"\/"v64))=(v66"\/"(v64"\/"v65))
proof let v65,v66,v64;
((v64"\/"v65)"\/"(v64"\/"v66))=((v64"\/"v66)"\/"(v65"\/"v64)) by A176;
hence thesis by A186;
end;

A194: for v66,v65,v64 holds
((v64"\/"v65)"\/"(v66"\/"v64))=(v66"\/"(v64"\/"v65))
proof let v66,v65,v64;
((v64"\/"v65)"\/"(v64"\/"v66))=
((v64"\/"v65)"\/"(v66"\/"v64)) by A2,A3,JoinCom;
hence thesis by A186;
end;

A196: for v65,v66,v64 holds (v65"\/"(v64"\/"v66))=(v66"\/"(v64"\/"v65))
proof let v65,v66,v64;
((v64"\/"v65)"\/"(v66"\/"v64))=(v65"\/"(v64"\/"v66)) by A190;
hence thesis by A194;
end;

let v0,v1,v2;
v0"\/"(v1"\/"v2)=v2"\/"(v1"\/"v0) by A196 .=(v1"\/"v0)"\/"v2 by A2,A3,JoinCom
   .= (v0"\/"v1)"\/"v2 by A2,A3,JoinCom;
hence thesis;
end;
