reserve x,z for set;
reserve k for Element of NAT;
reserve D for non empty set;
reserve X for set;
reserve p,r for relation;
reserve a,a1,a2,b for FinSequence;
reserve a,b for FinSequence of D;
reserve p,r for Element of relations_on D;
reserve u,v,w for boolean object;
reserve A,z for set,
  x,y for FinSequence of A,
  h for PartFunc of A*,A,
  n,m for Nat;
reserve A for non empty set,
  h for PartFunc of A*,A,
  a for Element of A;

theorem
  for x be Element of PFuncs(A*,A) st x = <*>A .--> a holds <*x*>
  is homogeneous quasi_total non-empty
proof
  let x be Element of PFuncs(A*,A) such that
A1: x = <*>A .--> a;
A2: for n,h st n in dom <*x*> & h = <*x*>.n holds h is homogeneous
  proof
    let n,h;
    assume that
A3: n in dom <*x*> and
A4: h =<*x*>.n;
    n in {1} by A3,FINSEQ_1:2,def 8;
    then h = <*x*>.1 by A4,TARSKI:def 1;
    then h = x;
    hence thesis by A1;
  end;
A5: for n,h st n in dom <*x*> & h = <*x*>.n holds h is quasi_total
  proof
    let n,h;
    assume that
A6: n in dom <*x*> and
A7: h =<*x*>.n;
    n in {1} by A6,FINSEQ_1:2,def 8;
    then h = <*x*>.1 by A7,TARSKI:def 1;
    then h = x;
    hence thesis by A1,Th17;
  end;
  for n being object st n in dom <*x*> holds <*x*>.n is non empty
  proof
    let n be object;
    assume n in dom <*x*>;
    then n in {1} by FINSEQ_1:2,def 8;
    then <*x*>.n = <*x*>.1 by TARSKI:def 1;
    hence thesis by A1;
  end;
  hence thesis by A2,A5,FUNCT_1:def 9;
end;
