module AntiunifyWildcard where

data Nat = Z | S Nat deriving (Show)

antiunifywildcard :: Nat -> Nat -> Nat -> Nat -> Nat -> Nat
antiunifywildcard Z n1 n2 n3 n4 = S n1
antiunifywildcard (S Z) n1 n2 n3 n4 = S(S n2)
antiunifywildcard (S(S Z)) n1 n2 n3 n4 = S(S(S(S n3)))
antiunifywildcard (S(S(S Z))) n1 n2 n3 n4 = S(S(S(S(S(S(S(S n4)))))))
