c-----------------------------------------------------------
c Chapter 26: The Mobius Function(p233)
c-----------------------------------------------------------
c   Name of subroutine: MOBIUS
c
c   Algorithm:Find mobius matrix from covering relation.
c
c   input:    
c   complier: f77 mobius.f
c-----------------------------------------------------------

c-----The driver program is in mobius_2.f-------------------

c-----Subroutine begins here--------------------------------
      subroutine mobius(n,h,mu,sigma,sig1)
      implicit integer(a-z)
      dimension h(n,n),sigma(n),mu(n,n),sig1(n)
      call triang(n,h,sigma)
      do 1 i=1,n
      do 1 j=1,n
1     mu(i,j)=h(i,j)
      call renumb(n,n,sigma,sigma,mu)
      n1=n-1
      do 11  i=1,n1
      j1=i+1
      do 11  j=j1,n
11    mu(i,j)=-mu(i,j)
      call invert(n,mu,mu)
      do 12  i=1,n
      do 12  j=i,n
12    if(mu(i,j).ne.0)mu(i,j)=1
      call invert(n,mu,mu)
      do 20  i=1,n
20    sig1(sigma(i))=i
      call renumb(n,n,sig1,sig1,mu)
      return
      end


