 reserve n,i for Nat;
 reserve p for Prime;

theorem HcfLat:
  hcflatplus = hcflat || NATPLUS
  proof
    set hp = hcflatplus;
    set h = hcflat;
    set N = NATPLUS;
    [:N,N:] c= [:NAT,NAT:]; then
A0: [:N,N:] c= dom h by FUNCT_2:def 1;
    hp = h | [:N,N:]
    proof
A1:   dom hp = [:N,N:] by FUNCT_2:def 1
            .= dom (h | [:N,N:]) by RELAT_1:62,A0;
      for x being object st x in dom hp holds
        hp.x = (h | [:N,N:]).x
      proof
        let x be object;
        assume x in dom hp; then
A2:     x in [:N,N:] by FUNCT_2:def 1; then
        consider x1, x2 being object such that
B1:     x1 in N & x2 in N & x = [x1,x2] by ZFMISC_1:def 2;
        reconsider x1, x2 as NatPlus by B1;
        thus hp.x = hp.(x1,x2) by B1
            .= x1 gcd x2 by NAT_LAT:def 8
            .= h.(x1,x2) by NAT_LAT:def 1
            .= (h | [:N,N:]).x by A2,FUNCT_1:49,B1;
      end;
      hence thesis by A1,FUNCT_1:2;
    end;
    hence thesis;
  end;
