Implementing fuzzy relational product

Is it possible to perform fuzzy relational product with Hail? There are usually two operations, one operate on pairs of entries with a t-norm, another pools the result into one entry through taking the minimum (harsh product)or average (mean product). A comprehensive review its here t-norm, BK product. If this is applicable, what are the Hail functions that I should use in this case?

R: loci → patient, S: patient → disease, R*S^T: loci → disease

implication <- function(a, b, type) {
  switch (type,
    "S#" = ifelse(a!=1 || b==1, 1, 0),
    "S" = ifelse(a <= b, 1, 0),
    "S*" = ifelse(a <= b, 1, b),
    "G43" = min(1, b/1),
    "G43" = min(1,b/1,(1-a)/(1-b)),
    "L" = min(1,1-a+b),
    "KDL" = min(1,1-a+a*b),
    "KD" = max(1-a,b),
    "EZ" = max(min(a,b),1-a),
    "W" = min(max(1-a,b),max(max(a,1-b),min(b,1-a)))
  )
}

triangle_subproduct <- function(R,S,type,moderate=FALSE) {
  if(ncol(R) != nrow(S)) errorCondition("dimensions don't match")
  R_subprod_S <- matrix(0, nrow(R), ncol(S))
  for (i in 1:nrow(R)) {
    for (k in 1:ncol(S))
      R_subprod_S[i,k] <- ifelse(moderate,
                                 mean(mapply(implication,R[i,],S[,k],MoreArgs=list(type=type))),
                                 min(mapply(implication,R[i,],S[,k],MoreArgs=list(type=type))))
  }
  R_subprod_S
}