partfun2.miz
    
    begin
    
    reserve x,y,X,Y for
    set;
    
    reserve C,D,E for non
    empty  
    set;
    
    reserve SC for
    Subset of C; 
    
    reserve SD for
    Subset of D; 
    
    reserve SE for
    Subset of E; 
    
    reserve c,c1,c2 for
    Element of C; 
    
    reserve d,d1,d2 for
    Element of D; 
    
    reserve e for
    Element of E; 
    
    reserve f,f1,g for
    PartFunc of C, D; 
    
    reserve t for
    PartFunc of D, C; 
    
    reserve s for
    PartFunc of D, E; 
    
    reserve h for
    PartFunc of C, E; 
    
    reserve F for
    PartFunc of D, D; 
    
    theorem :: 
    
    PARTFUN2:1
    
    
    
    
    
    Th1: ( 
    dom f) 
    = ( 
    dom g) & (for c st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = (g 
    /. c)) implies f 
    = g 
    
    proof
    
      assume that
    
      
    
    A1: ( 
    dom f) 
    = ( 
    dom g) and 
    
      
    
    A2: for c st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = (g 
    /. c); 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A3: x 
    in ( 
    dom f); 
    
        then
    
        reconsider y = x as
    Element of C; 
    
        (f
    /. y) 
    = (g 
    /. y) by 
    A2,
    A3;
    
        then (f qua
    Function
    . y) 
    = (g 
    /. y) by 
    A3,
    PARTFUN1:def 6;
    
        hence (f qua
    Function
    . x) 
    = (g qua 
    Function
    . x) by 
    A1,
    A3,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    PARTFUN2:2
    
    
    
    
    
    Th2: y 
    in ( 
    rng f) iff ex c st c 
    in ( 
    dom f) & y 
    = (f 
    /. c) 
    
    proof
    
      thus y
    in ( 
    rng f) implies ex c st c 
    in ( 
    dom f) & y 
    = (f 
    /. c) 
    
      proof
    
        assume y
    in ( 
    rng f); 
    
        then
    
        consider x be
    object such that 
    
        
    
    A1: x 
    in ( 
    dom f) and 
    
        
    
    A2: y 
    = (f qua 
    Function
    . x) by 
    FUNCT_1:def 3;
    
        reconsider x as
    Element of C by 
    A1;
    
        take x;
    
        thus thesis by
    A1,
    A2,
    PARTFUN1:def 6;
    
      end;
    
      given c such that
    
      
    
    A3: c 
    in ( 
    dom f) and 
    
      
    
    A4: y 
    = (f 
    /. c); 
    
      (f qua
    Function
    . c) 
    in ( 
    rng f) by 
    A3,
    FUNCT_1:def 3;
    
      hence thesis by
    A3,
    A4,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:3
    
    
    
    
    
    Th3: h 
    = (s 
    * f) iff (for c holds c 
    in ( 
    dom h) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s)) & for c st c 
    in ( 
    dom h) holds (h 
    /. c) 
    = (s 
    /. (f 
    /. c)) 
    
    proof
    
      thus h
    = (s 
    * f) implies (for c holds c 
    in ( 
    dom h) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s)) & for c st c 
    in ( 
    dom h) holds (h 
    /. c) 
    = (s 
    /. (f 
    /. c)) 
    
      proof
    
        assume
    
        
    
    A1: h 
    = (s 
    * f); 
    
        
    
    A2: 
    
        now
    
          let c;
    
          thus c
    in ( 
    dom h) implies c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s) 
    
          proof
    
            assume c
    in ( 
    dom h); 
    
            then c
    in ( 
    dom f) & (f qua 
    Function
    . c) 
    in ( 
    dom s) by 
    A1,
    FUNCT_1: 11;
    
            hence thesis by
    PARTFUN1:def 6;
    
          end;
    
          assume that
    
          
    
    A3: c 
    in ( 
    dom f) and 
    
          
    
    A4: (f 
    /. c) 
    in ( 
    dom s); 
    
          (f qua
    Function
    . c) 
    in ( 
    dom s) by 
    A3,
    A4,
    PARTFUN1:def 6;
    
          hence c
    in ( 
    dom h) by 
    A1,
    A3,
    FUNCT_1: 11;
    
        end;
    
        hence for c holds c
    in ( 
    dom h) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s); 
    
        let c;
    
        assume
    
        
    
    A5: c 
    in ( 
    dom h); 
    
        then (h qua
    Function
    . c) 
    = (s qua 
    Function
    . (f qua 
    Function
    . c)) by 
    A1,
    FUNCT_1: 12;
    
        then
    
        
    
    A6: (h 
    /. c) 
    = (s qua 
    Function
    . (f qua 
    Function
    . c)) by 
    A5,
    PARTFUN1:def 6;
    
        c
    in ( 
    dom f) by 
    A2,
    A5;
    
        then
    
        
    
    A7: (h 
    /. c) 
    = (s qua 
    Function
    . (f 
    /. c)) by 
    A6,
    PARTFUN1:def 6;
    
        (f
    /. c) 
    in ( 
    dom s) by 
    A2,
    A5;
    
        hence thesis by
    A7,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A8: for c holds c 
    in ( 
    dom h) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s) and 
    
      
    
    A9: for c st c 
    in ( 
    dom h) holds (h 
    /. c) 
    = (s 
    /. (f 
    /. c)); 
    
      
    
    A10: 
    
      now
    
        let x be
    object;
    
        thus x
    in ( 
    dom h) implies x 
    in ( 
    dom f) & (f qua 
    Function
    . x) 
    in ( 
    dom s) 
    
        proof
    
          assume
    
          
    
    A11: x 
    in ( 
    dom h); 
    
          then
    
          reconsider y = x as
    Element of C; 
    
          y
    in ( 
    dom f) & (f 
    /. y) 
    in ( 
    dom s) by 
    A8,
    A11;
    
          hence thesis by
    PARTFUN1:def 6;
    
        end;
    
        thus x
    in ( 
    dom f) & (f qua 
    Function
    . x) 
    in ( 
    dom s) implies x 
    in ( 
    dom h) 
    
        proof
    
          assume that
    
          
    
    A12: x 
    in ( 
    dom f) and 
    
          
    
    A13: (f qua 
    Function
    . x) 
    in ( 
    dom s); 
    
          reconsider y = x as
    Element of C by 
    A12;
    
          (f
    /. y) 
    in ( 
    dom s) by 
    A12,
    A13,
    PARTFUN1:def 6;
    
          hence thesis by
    A8,
    A12;
    
        end;
    
      end;
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A14: x 
    in ( 
    dom h); 
    
        then
    
        reconsider y = x as
    Element of C; 
    
        (h
    /. y) 
    = (s 
    /. (f 
    /. y)) by 
    A9,
    A14;
    
        then
    
        
    
    A15: (h qua 
    Function
    . y) 
    = (s 
    /. (f 
    /. y)) by 
    A14,
    PARTFUN1:def 6;
    
        (f
    /. y) 
    in ( 
    dom s) by 
    A8,
    A14;
    
        then
    
        
    
    A16: (h qua 
    Function
    . x) 
    = (s qua 
    Function
    . (f 
    /. y)) by 
    A15,
    PARTFUN1:def 6;
    
        y
    in ( 
    dom f) by 
    A8,
    A14;
    
        hence (h qua
    Function
    . x) 
    = (s qua 
    Function
    . (f qua 
    Function
    . x)) by 
    A16,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A10,
    FUNCT_1: 10;
    
    end;
    
    theorem :: 
    
    PARTFUN2:4
    
    
    
    
    
    Th4: c 
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s) implies ((s 
    * f) 
    /. c) 
    = (s 
    /. (f 
    /. c)) 
    
    proof
    
      assume c
    in ( 
    dom f) & (f 
    /. c) 
    in ( 
    dom s); 
    
      then c
    in ( 
    dom (s 
    * f)) by 
    Th3;
    
      hence thesis by
    Th3;
    
    end;
    
    theorem :: 
    
    PARTFUN2:5
    
    (
    rng f) 
    c= ( 
    dom s) & c 
    in ( 
    dom f) implies ((s 
    * f) 
    /. c) 
    = (s 
    /. (f 
    /. c)) 
    
    proof
    
      assume that
    
      
    
    A1: ( 
    rng f) 
    c= ( 
    dom s) and 
    
      
    
    A2: c 
    in ( 
    dom f); 
    
      (f
    /. c) 
    in ( 
    rng f) by 
    A2,
    Th2;
    
      hence thesis by
    A1,
    A2,
    Th4;
    
    end;
    
    definition
    
      let D;
    
      let SD;
    
      :: original:
    id
    
      redefine
    
      func
    
    id SD -> 
    PartFunc of D, D ; 
    
      coherence
    
      proof
    
        (
    dom ( 
    id SD)) 
    = SD & ( 
    rng ( 
    id SD)) 
    = SD by 
    RELAT_1: 45;
    
        hence thesis by
    RELSET_1: 4;
    
      end;
    
    end
    
    theorem :: 
    
    PARTFUN2:6
    
    
    
    
    
    Th6: F 
    = ( 
    id SD) iff ( 
    dom F) 
    = SD & for d st d 
    in SD holds (F 
    /. d) 
    = d 
    
    proof
    
      thus F
    = ( 
    id SD) implies ( 
    dom F) 
    = SD & for d st d 
    in SD holds (F 
    /. d) 
    = d 
    
      proof
    
        assume
    
        
    
    A1: F 
    = ( 
    id SD); 
    
        hence
    
        
    
    A2: ( 
    dom F) 
    = SD by 
    RELAT_1: 45;
    
        let d;
    
        assume
    
        
    
    A3: d 
    in SD; 
    
        then (F qua
    Function
    . d) 
    = d by 
    A1,
    FUNCT_1: 18;
    
        hence thesis by
    A2,
    A3,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A4: ( 
    dom F) 
    = SD and 
    
      
    
    A5: for d st d 
    in SD holds (F 
    /. d) 
    = d; 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A6: x 
    in SD; 
    
        then
    
        reconsider x1 = x as
    Element of D; 
    
        (F
    /. x1) 
    = x1 by 
    A5,
    A6;
    
        hence (F qua
    Function
    . x) 
    = x by 
    A4,
    A6,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A4,
    FUNCT_1: 17;
    
    end;
    
    theorem :: 
    
    PARTFUN2:7
    
    d
    in (( 
    dom F) 
    /\ SD) implies (F 
    /. d) 
    = ((F 
    * ( 
    id SD)) 
    /. d) 
    
    proof
    
      assume
    
      
    
    A1: d 
    in (( 
    dom F) 
    /\ SD); 
    
      then
    
      
    
    A2: d 
    in ( 
    dom F) by 
    XBOOLE_0:def 4;
    
      (F qua
    Function
    . d) 
    = ((F 
    * ( 
    id SD)) qua 
    Function
    . d) by 
    A1,
    FUNCT_1: 20;
    
      then
    
      
    
    A3: (F 
    /. d) 
    = ((F 
    * ( 
    id SD)) qua 
    Function
    . d) by 
    A2,
    PARTFUN1:def 6;
    
      
    
      
    
    A4: d 
    in SD by 
    A1,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A5: d 
    in ( 
    dom ( 
    id SD)) by 
    RELAT_1: 45;
    
      ((
    id SD) 
    /. d) 
    in ( 
    dom F) by 
    A2,
    A4,
    Th6;
    
      then d
    in ( 
    dom (F 
    * ( 
    id SD))) by 
    A5,
    Th3;
    
      hence thesis by
    A3,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:8
    
    d
    in ( 
    dom (( 
    id SD) 
    * F)) iff d 
    in ( 
    dom F) & (F 
    /. d) 
    in SD 
    
    proof
    
      thus d
    in ( 
    dom (( 
    id SD) 
    * F)) implies d 
    in ( 
    dom F) & (F 
    /. d) 
    in SD 
    
      proof
    
        assume
    
        
    
    A1: d 
    in ( 
    dom (( 
    id SD) 
    * F)); 
    
        then (F
    /. d) 
    in ( 
    dom ( 
    id SD)) by 
    Th3;
    
        hence thesis by
    A1,
    Th3,
    RELAT_1: 45;
    
      end;
    
      assume that
    
      
    
    A2: d 
    in ( 
    dom F) and 
    
      
    
    A3: (F 
    /. d) 
    in SD; 
    
      (F
    /. d) 
    in ( 
    dom ( 
    id SD)) by 
    A3,
    RELAT_1: 45;
    
      hence thesis by
    A2,
    Th3;
    
    end;
    
    theorem :: 
    
    PARTFUN2:9
    
    (for c1, c2 st c1
    in ( 
    dom f) & c2 
    in ( 
    dom f) & (f 
    /. c1) 
    = (f 
    /. c2) holds c1 
    = c2) implies f is 
    one-to-one
    
    proof
    
      assume
    
      
    
    A1: for c1, c2 st c1 
    in ( 
    dom f) & c2 
    in ( 
    dom f) & (f 
    /. c1) 
    = (f 
    /. c2) holds c1 
    = c2; 
    
      now
    
        let x,y be
    object;
    
        assume that
    
        
    
    A2: x 
    in ( 
    dom f) and 
    
        
    
    A3: y 
    in ( 
    dom f) and 
    
        
    
    A4: (f qua 
    Function
    . x) 
    = (f qua 
    Function
    . y); 
    
        reconsider y1 = y as
    Element of C by 
    A3;
    
        reconsider x1 = x as
    Element of C by 
    A2;
    
        (f
    /. x1) 
    = (f qua 
    Function
    . y1) by 
    A2,
    A4,
    PARTFUN1:def 6;
    
        then (f
    /. x1) 
    = (f 
    /. y1) by 
    A3,
    PARTFUN1:def 6;
    
        hence x
    = y by 
    A1,
    A2,
    A3;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    PARTFUN2:10
    
    f is
    one-to-one & x 
    in ( 
    dom f) & y 
    in ( 
    dom f) & (f 
    /. x) 
    = (f 
    /. y) implies x 
    = y 
    
    proof
    
      assume that
    
      
    
    A1: f is 
    one-to-one and 
    
      
    
    A2: x 
    in ( 
    dom f) and 
    
      
    
    A3: y 
    in ( 
    dom f); 
    
      assume (f
    /. x) 
    = (f 
    /. y); 
    
      
    
      then (f
    . x) 
    = (f 
    /. y) by 
    A2,
    PARTFUN1:def 6
    
      .= (f
    . y) by 
    A3,
    PARTFUN1:def 6;
    
      hence thesis by
    A1,
    A2,
    A3;
    
    end;
    
    definition
    
      let X, Y;
    
      let f be
    one-to-one  
    PartFunc of X, Y; 
    
      :: original:
    "
    
      redefine
    
      func f
    
    " -> 
    PartFunc of Y, X ; 
    
      coherence by
    PARTFUN1: 9;
    
    end
    
    theorem :: 
    
    PARTFUN2:11
    
    
    
    
    
    Th11: for f be 
    one-to-one  
    PartFunc of C, D holds for g be 
    PartFunc of D, C holds g 
    = (f 
    " ) iff ( 
    dom g) 
    = ( 
    rng f) & for d, c holds d 
    in ( 
    rng f) & c 
    = (g 
    /. d) iff c 
    in ( 
    dom f) & d 
    = (f 
    /. c) 
    
    proof
    
      let f be
    one-to-one  
    PartFunc of C, D; 
    
      let g be
    PartFunc of D, C; 
    
      thus g
    = (f 
    " ) implies ( 
    dom g) 
    = ( 
    rng f) & for d, c holds d 
    in ( 
    rng f) & c 
    = (g 
    /. d) iff c 
    in ( 
    dom f) & d 
    = (f 
    /. c) 
    
      proof
    
        assume
    
        
    
    A1: g 
    = (f 
    " ); 
    
        hence (
    dom g) 
    = ( 
    rng f) by 
    FUNCT_1: 32;
    
        let d, c;
    
        
    
        
    
    A2: ( 
    dom g) 
    = ( 
    rng f) by 
    A1,
    FUNCT_1: 32;
    
        thus d
    in ( 
    rng f) & c 
    = (g 
    /. d) implies c 
    in ( 
    dom f) & d 
    = (f 
    /. c) 
    
        proof
    
          assume that
    
          
    
    A3: d 
    in ( 
    rng f) and 
    
          
    
    A4: c 
    = (g 
    /. d); 
    
          c
    = (g qua 
    Function
    . d) by 
    A2,
    A3,
    A4,
    PARTFUN1:def 6;
    
          then c
    in ( 
    dom f) & d 
    = (f qua 
    Function
    . c) by 
    A1,
    A3,
    FUNCT_1: 32;
    
          hence thesis by
    PARTFUN1:def 6;
    
        end;
    
        assume that
    
        
    
    A5: c 
    in ( 
    dom f) and 
    
        
    
    A6: d 
    = (f 
    /. c); 
    
        d
    = (f qua 
    Function
    . c) by 
    A5,
    A6,
    PARTFUN1:def 6;
    
        then d
    in ( 
    rng f) & c 
    = (g qua 
    Function
    . d) by 
    A1,
    A5,
    FUNCT_1: 32;
    
        hence thesis by
    A2,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A7: ( 
    dom g) 
    = ( 
    rng f) and 
    
      
    
    A8: for d, c holds d 
    in ( 
    rng f) & c 
    = (g 
    /. d) iff c 
    in ( 
    dom f) & d 
    = (f 
    /. c) and 
    
      
    
    A9: g 
    <> (f 
    " ); 
    
      now
    
        per cases by
    A9,
    Th1;
    
          suppose (
    dom (f 
    " )) 
    <> ( 
    dom g); 
    
          hence contradiction by
    A7,
    FUNCT_1: 33;
    
        end;
    
          suppose ex d st d
    in ( 
    dom (f 
    " )) & ((f 
    " ) 
    /. d) 
    <> (g 
    /. d); 
    
          then
    
          consider d such that
    
          
    
    A10: d 
    in ( 
    dom (f 
    " )) and 
    
          
    
    A11: ((f 
    " ) 
    /. d) 
    <> (g 
    /. d); 
    
          ((f
    " ) 
    /. d) 
    in ( 
    rng (f 
    " )) by 
    A10,
    Th2;
    
          then
    
          
    
    A12: ((f 
    " ) 
    /. d) 
    in ( 
    dom f) by 
    FUNCT_1: 33;
    
          d
    in ( 
    rng f) by 
    A10,
    FUNCT_1: 33;
    
          then d
    = (f qua 
    Function
    . ((f 
    " ) qua 
    Function
    . d)) by 
    FUNCT_1: 35;
    
          then d
    = (f qua 
    Function
    . ((f 
    " ) 
    /. d)) by 
    A10,
    PARTFUN1:def 6;
    
          then d
    = (f 
    /. ((f 
    " ) 
    /. d)) by 
    A12,
    PARTFUN1:def 6;
    
          hence contradiction by
    A8,
    A11,
    A12;
    
        end;
    
      end;
    
      hence contradiction;
    
    end;
    
    theorem :: 
    
    PARTFUN2:12
    
    for f be
    one-to-one  
    PartFunc of C, D st c 
    in ( 
    dom f) holds c 
    = ((f 
    " ) 
    /. (f 
    /. c)) & c 
    = (((f 
    " ) 
    * f) 
    /. c) 
    
    proof
    
      let f be
    one-to-one  
    PartFunc of C, D; 
    
      assume
    
      
    
    A1: c 
    in ( 
    dom f); 
    
      hence
    
      
    
    A2: c 
    = ((f 
    " ) 
    /. (f 
    /. c)) by 
    Th11;
    
      (f
    " ) 
    = (f 
    " ); 
    
      then (f
    /. c) 
    in ( 
    rng f) by 
    A1,
    Th11;
    
      then (f
    /. c) 
    in ( 
    dom (f 
    " )) by 
    FUNCT_1: 33;
    
      hence thesis by
    A1,
    A2,
    Th4;
    
    end;
    
    theorem :: 
    
    PARTFUN2:13
    
    for f be
    one-to-one  
    PartFunc of C, D st d 
    in ( 
    rng f) holds d 
    = (f 
    /. ((f 
    " ) 
    /. d)) & d 
    = ((f 
    * (f 
    " )) 
    /. d) 
    
    proof
    
      let f be
    one-to-one  
    PartFunc of C, D; 
    
      assume
    
      
    
    A1: d 
    in ( 
    rng f); 
    
      then d
    = ((f 
    * (f 
    " )) qua 
    Function
    . d) & d 
    in ( 
    dom (f 
    * (f 
    " ))) by 
    FUNCT_1: 35,
    FUNCT_1: 37;
    
      hence thesis by
    A1,
    Th11,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:14
    
    f is
    one-to-one & ( 
    dom f) 
    = ( 
    rng t) & ( 
    rng f) 
    = ( 
    dom t) & (for c, d st c 
    in ( 
    dom f) & d 
    in ( 
    dom t) holds (f 
    /. c) 
    = d iff (t 
    /. d) 
    = c) implies t 
    = (f 
    " ) 
    
    proof
    
      assume that
    
      
    
    A1: f is 
    one-to-one & ( 
    dom f) 
    = ( 
    rng t) & ( 
    rng f) 
    = ( 
    dom t) and 
    
      
    
    A2: for c, d st c 
    in ( 
    dom f) & d 
    in ( 
    dom t) holds (f 
    /. c) 
    = d iff (t 
    /. d) 
    = c; 
    
      now
    
        let x,y be
    object;
    
        assume that
    
        
    
    A3: x 
    in ( 
    dom f) and 
    
        
    
    A4: y 
    in ( 
    dom t); 
    
        reconsider y1 = y as
    Element of D by 
    A4;
    
        reconsider x1 = x as
    Element of C by 
    A3;
    
        thus (f qua
    Function
    . x) 
    = y implies (t qua 
    Function
    . y) 
    = x 
    
        proof
    
          assume (f qua
    Function
    . x) 
    = y; 
    
          then (f
    /. x1) 
    = y1 by 
    A3,
    PARTFUN1:def 6;
    
          then (t
    /. y1) 
    = x1 by 
    A2,
    A3,
    A4;
    
          hence thesis by
    A4,
    PARTFUN1:def 6;
    
        end;
    
        assume (t qua
    Function
    . y) 
    = x; 
    
        then (t
    /. y1) 
    = x1 by 
    A4,
    PARTFUN1:def 6;
    
        then (f
    /. x1) 
    = y1 by 
    A2,
    A3,
    A4;
    
        hence (f qua
    Function
    . x) 
    = y by 
    A3,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A1,
    FUNCT_1: 38;
    
    end;
    
    theorem :: 
    
    PARTFUN2:15
    
    
    
    
    
    Th15: g 
    = (f 
    | X) iff ( 
    dom g) 
    = (( 
    dom f) 
    /\ X) & for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c) 
    
    proof
    
      thus g
    = (f 
    | X) implies ( 
    dom g) 
    = (( 
    dom f) 
    /\ X) & for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c) 
    
      proof
    
        assume
    
        
    
    A1: g 
    = (f 
    | X); 
    
        hence (
    dom g) 
    = (( 
    dom f) 
    /\ X) by 
    RELAT_1: 61;
    
        let c;
    
        assume
    
        
    
    A2: c 
    in ( 
    dom g); 
    
        then (g qua
    Function
    . c) 
    = (f qua 
    Function
    . c) by 
    A1,
    FUNCT_1: 47;
    
        then
    
        
    
    A3: (g 
    /. c) 
    = (f qua 
    Function
    . c) by 
    A2,
    PARTFUN1:def 6;
    
        (
    dom g) 
    = (( 
    dom f) 
    /\ X) by 
    A1,
    RELAT_1: 61;
    
        then c
    in ( 
    dom f) by 
    A2,
    XBOOLE_0:def 4;
    
        hence thesis by
    A3,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A4: ( 
    dom g) 
    = (( 
    dom f) 
    /\ X) and 
    
      
    
    A5: for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c); 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A6: x 
    in ( 
    dom g); 
    
        then
    
        reconsider y = x as
    Element of C; 
    
        (g
    /. y) 
    = (f 
    /. y) by 
    A5,
    A6;
    
        then
    
        
    
    A7: (g qua 
    Function
    . y) 
    = (f 
    /. y) by 
    A6,
    PARTFUN1:def 6;
    
        x
    in ( 
    dom f) by 
    A4,
    A6,
    XBOOLE_0:def 4;
    
        hence (g qua
    Function
    . x) 
    = (f qua 
    Function
    . x) by 
    A7,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A4,
    FUNCT_1: 46;
    
    end;
    
    theorem :: 
    
    PARTFUN2:16
    
    
    
    
    
    Th16: c 
    in (( 
    dom f) 
    /\ X) implies ((f 
    | X) 
    /. c) 
    = (f 
    /. c) 
    
    proof
    
      assume c
    in (( 
    dom f) 
    /\ X); 
    
      then c
    in ( 
    dom (f 
    | X)) by 
    RELAT_1: 61;
    
      hence thesis by
    Th15;
    
    end;
    
    theorem :: 
    
    PARTFUN2:17
    
    c
    in ( 
    dom f) & c 
    in X implies ((f 
    | X) 
    /. c) 
    = (f 
    /. c) 
    
    proof
    
      assume c
    in ( 
    dom f) & c 
    in X; 
    
      then c
    in (( 
    dom f) 
    /\ X) by 
    XBOOLE_0:def 4;
    
      hence thesis by
    Th16;
    
    end;
    
    theorem :: 
    
    PARTFUN2:18
    
    c
    in ( 
    dom f) & c 
    in X implies (f 
    /. c) 
    in ( 
    rng (f 
    | X)) 
    
    proof
    
      assume that
    
      
    
    A1: c 
    in ( 
    dom f) and 
    
      
    
    A2: c 
    in X; 
    
      (f qua
    Function
    . c) 
    in ( 
    rng (f 
    | X)) by 
    A1,
    A2,
    FUNCT_1: 50;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    definition
    
      let C, D;
    
      let X, f;
    
      :: original:
    |`
    
      redefine
    
      func X
    
    |` f -> 
    PartFunc of C, D ; 
    
      coherence by
    PARTFUN1: 13;
    
    end
    
    theorem :: 
    
    PARTFUN2:19
    
    
    
    
    
    Th19: g 
    = (X 
    |` f) iff (for c holds c 
    in ( 
    dom g) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X) & for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c) 
    
    proof
    
      thus g
    = (X 
    |` f) implies (for c holds c 
    in ( 
    dom g) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X) & for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c) 
    
      proof
    
        assume
    
        
    
    A1: g 
    = (X 
    |` f); 
    
        now
    
          let c;
    
          thus c
    in ( 
    dom g) implies c 
    in ( 
    dom f) & (f 
    /. c) 
    in X 
    
          proof
    
            assume c
    in ( 
    dom g); 
    
            then c
    in ( 
    dom f) & (f qua 
    Function
    . c) 
    in X by 
    A1,
    FUNCT_1: 54;
    
            hence thesis by
    PARTFUN1:def 6;
    
          end;
    
          assume that
    
          
    
    A2: c 
    in ( 
    dom f) and 
    
          
    
    A3: (f 
    /. c) 
    in X; 
    
          (f qua
    Function
    . c) 
    in X by 
    A2,
    A3,
    PARTFUN1:def 6;
    
          hence c
    in ( 
    dom g) by 
    A1,
    A2,
    FUNCT_1: 54;
    
        end;
    
        hence for c holds c
    in ( 
    dom g) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X; 
    
        let c;
    
        assume
    
        
    
    A4: c 
    in ( 
    dom g); 
    
        then (g qua
    Function
    . c) 
    = (f qua 
    Function
    . c) by 
    A1,
    FUNCT_1: 55;
    
        then
    
        
    
    A5: (g 
    /. c) 
    = (f qua 
    Function
    . c) by 
    A4,
    PARTFUN1:def 6;
    
        c
    in ( 
    dom f) by 
    A1,
    A4,
    FUNCT_1: 54;
    
        hence thesis by
    A5,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A6: for c holds c 
    in ( 
    dom g) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X and 
    
      
    
    A7: for c st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = (f 
    /. c); 
    
      
    
    A8: 
    
      now
    
        let x be
    object;
    
        thus x
    in ( 
    dom g) implies x 
    in ( 
    dom f) & (f qua 
    Function
    . x) 
    in X 
    
        proof
    
          assume
    
          
    
    A9: x 
    in ( 
    dom g); 
    
          then
    
          reconsider x1 = x as
    Element of C; 
    
          x1
    in ( 
    dom f) & (f 
    /. x1) 
    in X by 
    A6,
    A9;
    
          hence thesis by
    PARTFUN1:def 6;
    
        end;
    
        assume that
    
        
    
    A10: x 
    in ( 
    dom f) and 
    
        
    
    A11: (f qua 
    Function
    . x) 
    in X; 
    
        reconsider x1 = x as
    Element of C by 
    A10;
    
        (f
    /. x1) 
    in X by 
    A10,
    A11,
    PARTFUN1:def 6;
    
        hence x
    in ( 
    dom g) by 
    A6,
    A10;
    
      end;
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A12: x 
    in ( 
    dom g); 
    
        then
    
        reconsider x1 = x as
    Element of C; 
    
        (g
    /. x1) 
    = (f 
    /. x1) by 
    A7,
    A12;
    
        then
    
        
    
    A13: (g qua 
    Function
    . x1) 
    = (f 
    /. x1) by 
    A12,
    PARTFUN1:def 6;
    
        x1
    in ( 
    dom f) by 
    A6,
    A12;
    
        hence (g qua
    Function
    . x) 
    = (f qua 
    Function
    . x) by 
    A13,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A8,
    FUNCT_1: 53;
    
    end;
    
    theorem :: 
    
    PARTFUN2:20
    
    c
    in ( 
    dom (X 
    |` f)) iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X by 
    Th19;
    
    theorem :: 
    
    PARTFUN2:21
    
    c
    in ( 
    dom (X 
    |` f)) implies ((X 
    |` f) 
    /. c) 
    = (f 
    /. c) by 
    Th19;
    
    theorem :: 
    
    PARTFUN2:22
    
    
    
    
    
    Th22: SD 
    = (f 
    .: X) iff for d holds d 
    in SD iff ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    /. c) 
    
    proof
    
      thus SD
    = (f 
    .: X) implies for d holds d 
    in SD iff ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    /. c) 
    
      proof
    
        assume
    
        
    
    A1: SD 
    = (f 
    .: X); 
    
        let d;
    
        thus d
    in SD implies ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    /. c) 
    
        proof
    
          assume d
    in SD; 
    
          then
    
          consider x be
    object such that 
    
          
    
    A2: x 
    in ( 
    dom f) and 
    
          
    
    A3: x 
    in X and 
    
          
    
    A4: d 
    = (f qua 
    Function
    . x) by 
    A1,
    FUNCT_1:def 6;
    
          reconsider x as
    Element of C by 
    A2;
    
          take x;
    
          thus x
    in ( 
    dom f) & x 
    in X by 
    A2,
    A3;
    
          thus thesis by
    A2,
    A4,
    PARTFUN1:def 6;
    
        end;
    
        given c such that
    
        
    
    A5: c 
    in ( 
    dom f) and 
    
        
    
    A6: c 
    in X & d 
    = (f 
    /. c); 
    
        (f
    /. c) 
    = (f qua 
    Function
    . c) by 
    A5,
    PARTFUN1:def 6;
    
        hence thesis by
    A1,
    A5,
    A6,
    FUNCT_1:def 6;
    
      end;
    
      assume that
    
      
    
    A7: for d holds d 
    in SD iff ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    /. c) and 
    
      
    
    A8: SD 
    <> (f 
    .: X); 
    
      consider x be
    object such that 
    
      
    
    A9: not (x 
    in SD iff x 
    in (f 
    .: X)) by 
    A8,
    TARSKI: 2;
    
      now
    
        per cases by
    A9;
    
          suppose
    
          
    
    A10: x 
    in SD & not x 
    in (f 
    .: X); 
    
          then
    
          reconsider x as
    Element of D; 
    
          consider c such that
    
          
    
    A11: c 
    in ( 
    dom f) and 
    
          
    
    A12: c 
    in X and 
    
          
    
    A13: x 
    = (f 
    /. c) by 
    A7,
    A10;
    
          x
    = (f qua 
    Function
    . c) by 
    A11,
    A13,
    PARTFUN1:def 6;
    
          hence contradiction by
    A10,
    A11,
    A12,
    FUNCT_1:def 6;
    
        end;
    
          suppose
    
          
    
    A14: x 
    in (f 
    .: X) & not x 
    in SD; 
    
          then
    
          consider y be
    object such that 
    
          
    
    A15: y 
    in ( 
    dom f) and 
    
          
    
    A16: y 
    in X and 
    
          
    
    A17: x 
    = (f qua 
    Function
    . y) by 
    FUNCT_1:def 6;
    
          reconsider y as
    Element of C by 
    A15;
    
          x
    = (f 
    /. y) by 
    A15,
    A17,
    PARTFUN1:def 6;
    
          hence contradiction by
    A7,
    A14,
    A15,
    A16;
    
        end;
    
      end;
    
      hence contradiction;
    
    end;
    
    theorem :: 
    
    PARTFUN2:23
    
    d
    in (f qua 
    Relation of C, D 
    .: X) iff ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    /. c) by 
    Th22;
    
    theorem :: 
    
    PARTFUN2:24
    
    c
    in ( 
    dom f) implies ( 
    Im (f,c)) 
    =  
    {(f
    /. c)} 
    
    proof
    
      assume
    
      
    
    A1: c 
    in ( 
    dom f); 
    
      
    
      hence (
    Im (f,c)) 
    =  
    {(f qua
    Function
    . c)} by 
    FUNCT_1: 59
    
      .=
    {(f
    /. c)} by 
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:25
    
    c1
    in ( 
    dom f) & c2 
    in ( 
    dom f) implies (f 
    .:  
    {c1, c2})
    =  
    {(f
    /. c1), (f 
    /. c2)} 
    
    proof
    
      assume that
    
      
    
    A1: c1 
    in ( 
    dom f) and 
    
      
    
    A2: c2 
    in ( 
    dom f); 
    
      
    
      thus (f
    .:  
    {c1, c2})
    =  
    {(f qua
    Function
    . c1), (f qua 
    Function
    . c2)} by 
    A1,
    A2,
    FUNCT_1: 60
    
      .=
    {(f
    /. c1), (f qua 
    Function
    . c2)} by 
    A1,
    PARTFUN1:def 6
    
      .=
    {(f
    /. c1), (f 
    /. c2)} by 
    A2,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:26
    
    
    
    
    
    Th26: SC 
    = (f 
    " X) iff for c holds c 
    in SC iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X 
    
    proof
    
      thus SC
    = (f 
    " X) implies for c holds c 
    in SC iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X 
    
      proof
    
        assume
    
        
    
    A1: SC 
    = (f 
    " X); 
    
        let c;
    
        thus c
    in SC implies c 
    in ( 
    dom f) & (f 
    /. c) 
    in X 
    
        proof
    
          assume c
    in SC; 
    
          then c
    in ( 
    dom f) & (f qua 
    Function
    . c) 
    in X by 
    A1,
    FUNCT_1:def 7;
    
          hence thesis by
    PARTFUN1:def 6;
    
        end;
    
        assume that
    
        
    
    A2: c 
    in ( 
    dom f) and 
    
        
    
    A3: (f 
    /. c) 
    in X; 
    
        (f qua
    Function
    . c) 
    in X by 
    A2,
    A3,
    PARTFUN1:def 6;
    
        hence thesis by
    A1,
    A2,
    FUNCT_1:def 7;
    
      end;
    
      assume
    
      
    
    A4: for c holds c 
    in SC iff c 
    in ( 
    dom f) & (f 
    /. c) 
    in X; 
    
      now
    
        let x be
    object;
    
        thus x
    in SC implies x 
    in ( 
    dom f) & (f qua 
    Function
    . x) 
    in X 
    
        proof
    
          assume
    
          
    
    A5: x 
    in SC; 
    
          then
    
          reconsider x1 = x as
    Element of C; 
    
          x1
    in ( 
    dom f) & (f 
    /. x1) 
    in X by 
    A4,
    A5;
    
          hence thesis by
    PARTFUN1:def 6;
    
        end;
    
        assume that
    
        
    
    A6: x 
    in ( 
    dom f) and 
    
        
    
    A7: (f qua 
    Function
    . x) 
    in X; 
    
        reconsider x1 = x as
    Element of C by 
    A6;
    
        (f
    /. x1) 
    in X by 
    A6,
    A7,
    PARTFUN1:def 6;
    
        hence x
    in SC by 
    A4,
    A6;
    
      end;
    
      hence thesis by
    FUNCT_1:def 7;
    
    end;
    
    theorem :: 
    
    PARTFUN2:27
    
    for f holds ex g be
    Function of C, D st for c st c 
    in ( 
    dom f) holds (g 
    . c) 
    = (f 
    /. c) 
    
    proof
    
      let f;
    
      consider g be
    Function of C, D such that 
    
      
    
    A1: for x be 
    object st x 
    in ( 
    dom f) holds (g 
    . x) 
    = (f qua 
    Function
    . x) by 
    FUNCT_2: 71;
    
      take g;
    
      let c;
    
      assume
    
      
    
    A2: c 
    in ( 
    dom f); 
    
      then (g
    . c) 
    = (f qua 
    Function
    . c) by 
    A1;
    
      hence thesis by
    A2,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:28
    
    f
    tolerates g iff for c st c 
    in (( 
    dom f) 
    /\ ( 
    dom g)) holds (f 
    /. c) 
    = (g 
    /. c) 
    
    proof
    
      thus f
    tolerates g implies for c st c 
    in (( 
    dom f) 
    /\ ( 
    dom g)) holds (f 
    /. c) 
    = (g 
    /. c) 
    
      proof
    
        assume
    
        
    
    A1: f 
    tolerates g; 
    
        let c;
    
        assume
    
        
    
    A2: c 
    in (( 
    dom f) 
    /\ ( 
    dom g)); 
    
        then
    
        
    
    A3: c 
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
        (f qua
    Function
    . c) 
    = (g qua 
    Function
    . c) by 
    A1,
    A2,
    PARTFUN1:def 4;
    
        then
    
        
    
    A4: (f 
    /. c) 
    = (g qua 
    Function
    . c) by 
    A3,
    PARTFUN1:def 6;
    
        c
    in ( 
    dom g) by 
    A2,
    XBOOLE_0:def 4;
    
        hence thesis by
    A4,
    PARTFUN1:def 6;
    
      end;
    
      assume
    
      
    
    A5: for c st c 
    in (( 
    dom f) 
    /\ ( 
    dom g)) holds (f 
    /. c) 
    = (g 
    /. c); 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A6: x 
    in (( 
    dom f) 
    /\ ( 
    dom g)); 
    
        then
    
        reconsider x1 = x as
    Element of C; 
    
        x
    in ( 
    dom f) & (f 
    /. x1) 
    = (g 
    /. x1) by 
    A5,
    A6,
    XBOOLE_0:def 4;
    
        then
    
        
    
    A7: (f qua 
    Function
    . x) 
    = (g 
    /. x1) by 
    PARTFUN1:def 6;
    
        x
    in ( 
    dom g) by 
    A6,
    XBOOLE_0:def 4;
    
        hence (f qua
    Function
    . x) 
    = (g qua 
    Function
    . x) by 
    A7,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    PARTFUN1:def 4;
    
    end;
    
    scheme :: 
    
    PARTFUN2:sch1
    
    PartFuncExD { D,C() -> non
    empty  
    set , P[ 
    object, 
    object] } :
    
ex f be 
    PartFunc of D(), C() st (for d be 
    Element of D() holds d 
    in ( 
    dom f) iff (ex c be 
    Element of C() st P[d, c])) & for d be 
    Element of D() st d 
    in ( 
    dom f) holds P[d, (f 
    /. d)]; 
    
      defpred
    
    R[
    object] means ex c be
    Element of C() st P[$1, c]; 
    
      set x = the
    Element of C(); 
    
      defpred
    
    Q[
    object, 
    object] means ((ex c be
    Element of C() st P[$1, c]) implies P[$1, $2]) & ((for c be 
    Element of C() holds not P[$1, c]) implies $2 
    = x); 
    
      consider X be
    set such that 
    
      
    
    A1: for x be 
    object holds x 
    in X iff x 
    in D() & 
    R[x] from
    XBOOLE_0:sch 1;
    
      for x be
    object holds x 
    in X implies x 
    in D() by 
    A1;
    
      then
    
      reconsider X as
    Subset of D() by 
    TARSKI:def 3;
    
      
    
      
    
    A2: for d be 
    Element of D() holds ex z be 
    Element of C() st 
    Q[d, z]
    
      proof
    
        let d be
    Element of D(); 
    
        (for c be
    Element of C() holds not P[d, c]) implies ex z be 
    Element of C() st ((ex c be 
    Element of C() st P[d, c]) implies P[d, z]) & ((for c be 
    Element of C() holds not P[d, c]) implies z 
    = x); 
    
        hence thesis;
    
      end;
    
      consider g be
    Function of D(), C() such that 
    
      
    
    A3: for d be 
    Element of D() holds 
    Q[d, (g
    . d)] from 
    FUNCT_2:sch 3(
    A2);
    
      reconsider f = (g
    | X) as 
    PartFunc of D(), C(); 
    
      take f;
    
      
    
      
    
    A4: ( 
    dom g) 
    = D() by 
    FUNCT_2:def 1;
    
      thus for d be
    Element of D() holds d 
    in ( 
    dom f) iff ex c be 
    Element of C() st P[d, c] 
    
      proof
    
        let d be
    Element of D(); 
    
        (
    dom f) 
    c= X by 
    RELAT_1: 58;
    
        hence d
    in ( 
    dom f) implies ex c be 
    Element of C() st P[d, c] by 
    A1;
    
        assume ex c be
    Element of C() st P[d, c]; 
    
        then d
    in X by 
    A1;
    
        then d
    in (( 
    dom g) 
    /\ X) by 
    A4,
    XBOOLE_0:def 4;
    
        hence thesis by
    RELAT_1: 61;
    
      end;
    
      let d be
    Element of D(); 
    
      assume
    
      
    
    A5: d 
    in ( 
    dom f); 
    
      (
    dom f) 
    c= X by 
    RELAT_1: 58;
    
      then ex c be
    Element of C() st P[d, c] by 
    A1,
    A5;
    
      then P[d, (g
    . d)] by 
    A3;
    
      then P[d, (f qua
    Function
    . d)] by 
    A5,
    FUNCT_1: 47;
    
      hence thesis by
    A5,
    PARTFUN1:def 6;
    
    end;
    
    scheme :: 
    
    PARTFUN2:sch2
    
    LambdaPFD { D,C() -> non
    empty  
    set , F( 
    set) ->
    Element of C() , P[ 
    set] } :
    
ex f be 
    PartFunc of D(), C() st (for d be 
    Element of D() holds d 
    in ( 
    dom f) iff P[d]) & for d be 
    Element of D() st d 
    in ( 
    dom f) holds (f 
    /. d) 
    = F(d); 
    
      defpred
    
    Q[
    set, 
    set] means P[$1] & $2
    = F($1); 
    
      consider f be
    PartFunc of D(), C() such that 
    
      
    
    A1: for d be 
    Element of D() holds d 
    in ( 
    dom f) iff ex c be 
    Element of C() st 
    Q[d, c] and
    
      
    
    A2: for d be 
    Element of D() st d 
    in ( 
    dom f) holds 
    Q[d, (f
    /. d)] from 
    PartFuncExD;
    
      take f;
    
      thus for d be
    Element of D() holds d 
    in ( 
    dom f) iff P[d] 
    
      proof
    
        let d be
    Element of D(); 
    
        thus d
    in ( 
    dom f) implies P[d] 
    
        proof
    
          assume d
    in ( 
    dom f); 
    
          then ex c be
    Element of C() st P[d] & c 
    = F(d) by 
    A1;
    
          hence thesis;
    
        end;
    
        assume P[d];
    
        then ex c be
    Element of C() st P[d] & c 
    = F(d); 
    
        hence thesis by
    A1;
    
      end;
    
      thus thesis by
    A2;
    
    end;
    
    scheme :: 
    
    PARTFUN2:sch3
    
    UnPartFuncD { C,D() -> non
    empty  
    set , X() -> 
    set , F( 
    set) ->
    Element of D() } : 
    
for f,g be 
    PartFunc of C(), D() st (( 
    dom f) 
    = X() & for c be 
    Element of C() st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = F(c)) & (( 
    dom g) 
    = X() & for c be 
    Element of C() st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = F(c)) holds f 
    = g; 
    
      let f,g be
    PartFunc of C(), D(); 
    
      assume that
    
      
    
    A1: ( 
    dom f) 
    = X() and 
    
      
    
    A2: for c be 
    Element of C() st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = F(c) and 
    
      
    
    A3: ( 
    dom g) 
    = X() and 
    
      
    
    A4: for c be 
    Element of C() st c 
    in ( 
    dom g) holds (g 
    /. c) 
    = F(c); 
    
      now
    
        let c be
    Element of C(); 
    
        assume
    
        
    
    A5: c 
    in ( 
    dom f); 
    
        
    
        hence (f
    /. c) 
    = F(c) by 
    A2
    
        .= (g
    /. c) by 
    A1,
    A3,
    A4,
    A5;
    
      end;
    
      hence thesis by
    A1,
    A3,
    Th1;
    
    end;
    
    definition
    
      let C, D;
    
      let SC, d;
    
      :: original:
    -->
    
      redefine
    
      func SC
    
    --> d -> 
    PartFunc of C, D ; 
    
      coherence
    
      proof
    
        (
    dom (SC 
    --> d)) 
    = SC by 
    FUNCOP_1: 13;
    
        hence thesis by
    RELSET_1: 7;
    
      end;
    
    end
    
    theorem :: 
    
    PARTFUN2:29
    
    
    
    
    
    Th29: c 
    in SC implies ((SC 
    --> d) 
    /. c) 
    = d 
    
    proof
    
      assume
    
      
    
    A1: c 
    in SC; 
    
      then (
    dom (SC 
    --> d)) 
    = SC & ((SC 
    --> d) qua 
    Function
    . c) 
    = d by 
    FUNCOP_1: 7,
    FUNCOP_1: 13;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:30
    
    (for c st c
    in ( 
    dom f) holds (f 
    /. c) 
    = d) implies f 
    = (( 
    dom f) 
    --> d) 
    
    proof
    
      assume
    
      
    
    A1: for c st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = d; 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A2: x 
    in ( 
    dom f); 
    
        then
    
        reconsider x1 = x as
    Element of C; 
    
        (f
    /. x1) 
    = d by 
    A1,
    A2;
    
        hence (f qua
    Function
    . x) 
    = d by 
    A2,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    FUNCOP_1: 11;
    
    end;
    
    theorem :: 
    
    PARTFUN2:31
    
    c
    in ( 
    dom f) implies (f 
    * (SE 
    --> c)) 
    = (SE 
    --> (f 
    /. c)) 
    
    proof
    
      assume
    
      
    
    A1: c 
    in ( 
    dom f); 
    
      then (f
    * (SE 
    --> c)) 
    = (SE 
    --> (f qua 
    Function
    . c)) by 
    FUNCOP_1: 17;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:32
    
    (
    id SC) is 
    total iff SC 
    = C 
    
    proof
    
      thus (
    id SC) is 
    total implies SC 
    = C 
    
      proof
    
        assume (
    id SC) is 
    total;
    
        then (
    dom ( 
    id SC)) 
    = C by 
    PARTFUN1:def 2;
    
        hence thesis by
    RELAT_1: 45;
    
      end;
    
      assume SC
    = C; 
    
      then (
    dom ( 
    id SC)) 
    = C by 
    RELAT_1: 45;
    
      hence thesis by
    PARTFUN1:def 2;
    
    end;
    
    theorem :: 
    
    PARTFUN2:33
    
    (SC
    --> d) is 
    total implies SC 
    <>  
    {}  
    
    proof
    
      assume that
    
      
    
    A1: (SC 
    --> d) is 
    total and 
    
      
    
    A2: SC 
    =  
    {} ; 
    
      (
    dom (SC 
    --> d)) 
    = C by 
    A1,
    PARTFUN1:def 2;
    
      hence contradiction by
    A2,
    FUNCOP_1: 10;
    
    end;
    
    theorem :: 
    
    PARTFUN2:34
    
    (SC
    --> d) is 
    total iff SC 
    = C 
    
    proof
    
      thus (SC
    --> d) is 
    total implies SC 
    = C 
    
      proof
    
        assume (SC
    --> d) is 
    total;
    
        then (
    dom (SC 
    --> d)) 
    = C by 
    PARTFUN1:def 2;
    
        hence thesis by
    FUNCOP_1: 13;
    
      end;
    
      assume SC
    = C; 
    
      then (
    dom (SC 
    --> d)) 
    = C by 
    FUNCOP_1: 13;
    
      hence thesis by
    PARTFUN1:def 2;
    
    end;
    
    definition
    
      let C, D, f;
    
      :: original:
    constant
    
      redefine
    
      :: 
    
    PARTFUN2:def1
    
      attr f is
    
    constant means ex d st for c st c 
    in ( 
    dom f) holds (f 
    . c) 
    = d; 
    
      compatibility
    
      proof
    
        thus f is
    constant implies ex d st for c st c 
    in ( 
    dom f) holds (f 
    . c) 
    = d 
    
        proof
    
          assume
    
          
    
    A1: f is 
    constant;
    
          per cases ;
    
            suppose
    
            
    
    A2: ( 
    dom f) 
    =  
    {} ; 
    
            set d = the
    Element of D; 
    
            take d;
    
            thus thesis by
    A2;
    
          end;
    
            suppose (
    dom f) 
    <>  
    {} ; 
    
            then
    
            consider c0 be
    object such that 
    
            
    
    A3: c0 
    in ( 
    dom f) by 
    XBOOLE_0:def 1;
    
            reconsider c0 as
    Element of C by 
    A3;
    
            take d = (f
    /. c0); 
    
            let c;
    
            assume c
    in ( 
    dom f); 
    
            
    
            hence (f
    . c) 
    = (f 
    . c0) by 
    A1,
    A3
    
            .= d by
    A3,
    PARTFUN1:def 6;
    
          end;
    
        end;
    
        given d such that
    
        
    
    A4: for c st c 
    in ( 
    dom f) holds (f 
    . c) 
    = d; 
    
        let x,y be
    object such that 
    
        
    
    A5: x 
    in ( 
    dom f) and 
    
        
    
    A6: y 
    in ( 
    dom f); 
    
        
    
        thus (f
    . x) 
    = d by 
    A4,
    A5
    
        .= (f
    . y) by 
    A4,
    A6;
    
      end;
    
    end
    
    theorem :: 
    
    PARTFUN2:35
    
    
    
    
    
    Th35: (f 
    | X) is 
    constant iff ex d st for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d 
    
    proof
    
      thus (f
    | X) is 
    constant implies ex d st for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d 
    
      proof
    
        given d such that
    
        
    
    A1: for c st c 
    in ( 
    dom (f 
    | X)) holds ((f 
    | X) 
    . c) 
    = d; 
    
        take d;
    
        let c;
    
        assume
    
        
    
    A2: c 
    in (X 
    /\ ( 
    dom f)); 
    
        then
    
        
    
    A3: c 
    in ( 
    dom (f 
    | X)) by 
    RELAT_1: 61;
    
        c
    in ( 
    dom f) by 
    A2,
    XBOOLE_0:def 4;
    
        
    
        hence (f
    /. c) 
    = (f 
    . c) by 
    PARTFUN1:def 6
    
        .= ((f
    | X) 
    . c) by 
    A3,
    FUNCT_1: 47
    
        .= d by
    A1,
    A3;
    
      end;
    
      given d such that
    
      
    
    A4: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d; 
    
      take d;
    
      let c;
    
      assume
    
      
    
    A5: c 
    in ( 
    dom (f 
    | X)); 
    
      then
    
      
    
    A6: c 
    in (X 
    /\ ( 
    dom f)) by 
    RELAT_1: 61;
    
      then
    
      
    
    A7: c 
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
      
    
      thus ((f
    | X) 
    . c) 
    = (f 
    . c) by 
    A5,
    FUNCT_1: 47
    
      .= (f
    /. c) by 
    A7,
    PARTFUN1:def 6
    
      .= d by
    A4,
    A6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:36
    
    (f
    | X) is 
    constant iff for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c1) 
    = (f 
    /. c2) 
    
    proof
    
      thus (f
    | X) is 
    constant implies for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c1) 
    = (f 
    /. c2) 
    
      proof
    
        assume (f
    | X) is 
    constant;
    
        then
    
        consider d such that
    
        
    
    A1: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d by 
    Th35;
    
        let c1, c2;
    
        assume that
    
        
    
    A2: c1 
    in (X 
    /\ ( 
    dom f)) and 
    
        
    
    A3: c2 
    in (X 
    /\ ( 
    dom f)); 
    
        (f
    /. c1) 
    = d by 
    A1,
    A2;
    
        hence thesis by
    A1,
    A3;
    
      end;
    
      assume
    
      
    
    A4: for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c1) 
    = (f 
    /. c2); 
    
      now
    
        per cases ;
    
          suppose
    
          
    
    A5: (X 
    /\ ( 
    dom f)) 
    =  
    {} ; 
    
          now
    
            set d = the
    Element of D; 
    
            take d;
    
            let c;
    
            thus c
    in (X 
    /\ ( 
    dom f)) implies (f 
    /. c) 
    = d by 
    A5;
    
          end;
    
          hence thesis by
    Th35;
    
        end;
    
          suppose
    
          
    
    A6: (X 
    /\ ( 
    dom f)) 
    <>  
    {} ; 
    
          set x = the
    Element of (X 
    /\ ( 
    dom f)); 
    
          x
    in ( 
    dom f) by 
    A6,
    XBOOLE_0:def 4;
    
          then
    
          reconsider x as
    Element of C; 
    
          for c holds c
    in (X 
    /\ ( 
    dom f)) implies (f 
    /. c) 
    = (f 
    /. x) by 
    A4;
    
          hence thesis by
    Th35;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    PARTFUN2:37
    
    X
    meets ( 
    dom f) implies ((f 
    | X) is 
    constant iff ex d st ( 
    rng (f 
    | X)) 
    =  
    {d})
    
    proof
    
      assume
    
      
    
    A1: (X 
    /\ ( 
    dom f)) 
    <>  
    {} ; 
    
      thus (f
    | X) is 
    constant implies ex d st ( 
    rng (f 
    | X)) 
    =  
    {d}
    
      proof
    
        assume (f
    | X) is 
    constant;
    
        then
    
        consider d such that
    
        
    
    A2: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d by 
    Th35;
    
        take d;
    
        thus (
    rng (f 
    | X)) 
    c=  
    {d}
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    rng (f 
    | X)); 
    
          then
    
          consider y be
    object such that 
    
          
    
    A3: y 
    in ( 
    dom (f 
    | X)) and 
    
          
    
    A4: ((f 
    | X) qua 
    Function
    . y) 
    = x by 
    FUNCT_1:def 3;
    
          reconsider y as
    Element of C by 
    A3;
    
          (
    dom (f 
    | X)) 
    = (X 
    /\ ( 
    dom f)) by 
    RELAT_1: 61;
    
          
    
          then d
    = (f 
    /. y) by 
    A2,
    A3
    
          .= ((f
    | X) 
    /. y) by 
    A3,
    Th15
    
          .= x by
    A3,
    A4,
    PARTFUN1:def 6;
    
          hence thesis by
    TARSKI:def 1;
    
        end;
    
        thus
    {d}
    c= ( 
    rng (f 
    | X)) 
    
        proof
    
          set y = the
    Element of (X 
    /\ ( 
    dom f)); 
    
          y
    in ( 
    dom f) by 
    A1,
    XBOOLE_0:def 4;
    
          then
    
          reconsider y as
    Element of C; 
    
          let x be
    object such that 
    
          
    
    A5: x 
    in  
    {d};
    
          
    
          
    
    A6: ( 
    dom (f 
    | X)) 
    = (X 
    /\ ( 
    dom f)) by 
    RELAT_1: 61;
    
          
    
          then ((f
    | X) 
    /. y) 
    = (f 
    /. y) by 
    A1,
    Th15
    
          .= d by
    A1,
    A2
    
          .= x by
    A5,
    TARSKI:def 1;
    
          hence thesis by
    A1,
    A6,
    Th2;
    
        end;
    
      end;
    
      given d such that
    
      
    
    A7: ( 
    rng (f 
    | X)) 
    =  
    {d};
    
      take d;
    
      let c;
    
      assume
    
      
    
    A8: c 
    in ( 
    dom (f 
    | X)); 
    
      then ((f
    | X) 
    /. c) 
    in  
    {d} by
    A7,
    Th2;
    
      then ((f
    | X) 
    . c) 
    in  
    {d} by
    A8,
    PARTFUN1:def 6;
    
      hence thesis by
    TARSKI:def 1;
    
    end;
    
    theorem :: 
    
    PARTFUN2:38
    
    (f
    | X) is 
    constant & Y 
    c= X implies (f 
    | Y) is 
    constant
    
    proof
    
      assume that
    
      
    
    A1: (f 
    | X) is 
    constant and 
    
      
    
    A2: Y 
    c= X; 
    
      consider d such that
    
      
    
    A3: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d by 
    A1,
    Th35;
    
      now
    
        let c;
    
        assume c
    in (Y 
    /\ ( 
    dom f)); 
    
        then c
    in Y & c 
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
        then c
    in (X 
    /\ ( 
    dom f)) by 
    A2,
    XBOOLE_0:def 4;
    
        hence (f
    /. c) 
    = d by 
    A3;
    
      end;
    
      hence thesis by
    Th35;
    
    end;
    
    theorem :: 
    
    PARTFUN2:39
    
    
    
    
    
    Th39: X 
    misses ( 
    dom f) implies (f 
    | X) is 
    constant
    
    proof
    
      assume
    
      
    
    A1: (X 
    /\ ( 
    dom f)) 
    =  
    {} ; 
    
      now
    
        set d = the
    Element of D; 
    
        take d;
    
        let c;
    
        thus c
    in (X 
    /\ ( 
    dom f)) implies (f 
    /. c) 
    = d by 
    A1;
    
      end;
    
      hence thesis by
    Th35;
    
    end;
    
    theorem :: 
    
    PARTFUN2:40
    
    (f
    | SC) 
    = (( 
    dom (f 
    | SC)) 
    --> d) implies (f 
    | SC) is 
    constant
    
    proof
    
      assume
    
      
    
    A1: (f 
    | SC) 
    = (( 
    dom (f 
    | SC)) 
    --> d); 
    
      now
    
        let c;
    
        assume c
    in (SC 
    /\ ( 
    dom f)); 
    
        then
    
        
    
    A2: c 
    in ( 
    dom (f 
    | SC)) by 
    RELAT_1: 61;
    
        then ((f
    | SC) 
    /. c) 
    = d by 
    A1,
    Th29;
    
        hence (f
    /. c) 
    = d by 
    A2,
    Th15;
    
      end;
    
      hence thesis by
    Th35;
    
    end;
    
    theorem :: 
    
    PARTFUN2:41
    
    (f
    |  
    {x}) is
    constant
    
    proof
    
      now
    
        per cases ;
    
          suppose (
    {x}
    /\ ( 
    dom f)) 
    =  
    {} ; 
    
          then
    {x}
    misses ( 
    dom f); 
    
          hence thesis by
    Th39;
    
        end;
    
          suppose
    
          
    
    A1: ( 
    {x}
    /\ ( 
    dom f)) 
    <>  
    {} ; 
    
          set y = the
    Element of ( 
    {x}
    /\ ( 
    dom f)); 
    
          y
    in  
    {x} & y
    in ( 
    dom f) by 
    A1,
    XBOOLE_0:def 4;
    
          then
    
          reconsider x1 = x as
    Element of C by 
    TARSKI:def 1;
    
          now
    
            take d = (f
    /. x1); 
    
            let c;
    
            assume c
    in ( 
    {x}
    /\ ( 
    dom f)); 
    
            then c
    in  
    {x} by
    XBOOLE_0:def 4;
    
            hence (f
    /. c) 
    = (f 
    /. x1) by 
    TARSKI:def 1;
    
          end;
    
          hence thesis by
    Th35;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    PARTFUN2:42
    
    (f
    | X) is 
    constant & (f 
    | Y) is 
    constant & (X 
    /\ Y) 
    meets ( 
    dom f) implies (f 
    | (X 
    \/ Y)) is 
    constant
    
    proof
    
      assume that
    
      
    
    A1: (f 
    | X) is 
    constant and 
    
      
    
    A2: (f 
    | Y) is 
    constant and 
    
      
    
    A3: ((X 
    /\ Y) 
    /\ ( 
    dom f)) 
    <>  
    {} ; 
    
      consider d1 such that
    
      
    
    A4: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d1 by 
    A1,
    Th35;
    
      set x = the
    Element of ((X 
    /\ Y) 
    /\ ( 
    dom f)); 
    
      
    
      
    
    A5: x 
    in (X 
    /\ Y) by 
    A3,
    XBOOLE_0:def 4;
    
      
    
      
    
    A6: x 
    in ( 
    dom f) by 
    A3,
    XBOOLE_0:def 4;
    
      then
    
      reconsider x as
    Element of C; 
    
      x
    in Y by 
    A5,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A7: x 
    in (Y 
    /\ ( 
    dom f)) by 
    A6,
    XBOOLE_0:def 4;
    
      consider d2 such that
    
      
    
    A8: for c st c 
    in (Y 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d2 by 
    A2,
    Th35;
    
      x
    in X by 
    A5,
    XBOOLE_0:def 4;
    
      then x
    in (X 
    /\ ( 
    dom f)) by 
    A6,
    XBOOLE_0:def 4;
    
      then (f
    /. x) 
    = d1 by 
    A4;
    
      then
    
      
    
    A9: d1 
    = d2 by 
    A8,
    A7;
    
      take d1;
    
      let c;
    
      assume
    
      
    
    A10: c 
    in ( 
    dom (f 
    | (X 
    \/ Y))); 
    
      then
    
      
    
    A11: c 
    in ((X 
    \/ Y) 
    /\ ( 
    dom f)) by 
    RELAT_1: 61;
    
      then
    
      
    
    A12: c 
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
      
    
      
    
    A13: c 
    in (X 
    \/ Y) by 
    A11,
    XBOOLE_0:def 4;
    
      now
    
        per cases by
    A13,
    XBOOLE_0:def 3;
    
          suppose c
    in X; 
    
          then c
    in (X 
    /\ ( 
    dom f)) by 
    A12,
    XBOOLE_0:def 4;
    
          hence (f
    /. c) 
    = d1 by 
    A4;
    
        end;
    
          suppose c
    in Y; 
    
          then c
    in (Y 
    /\ ( 
    dom f)) by 
    A12,
    XBOOLE_0:def 4;
    
          hence (f
    /. c) 
    = d1 by 
    A8,
    A9;
    
        end;
    
      end;
    
      then ((f
    | (X 
    \/ Y)) 
    /. c) 
    = d1 by 
    A11,
    Th16;
    
      hence thesis by
    A10,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:43
    
    (f
    | Y) is 
    constant implies ((f 
    | X) 
    | Y) is 
    constant
    
    proof
    
      assume (f
    | Y) is 
    constant;
    
      then
    
      consider d such that
    
      
    
    A1: for c st c 
    in (Y 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d by 
    Th35;
    
      take d;
    
      let c;
    
      assume
    
      
    
    A2: c 
    in ( 
    dom ((f 
    | X) 
    | Y)); 
    
      then
    
      
    
    A3: c 
    in (Y 
    /\ ( 
    dom (f 
    | X))) by 
    RELAT_1: 61;
    
      then
    
      
    
    A4: c 
    in Y by 
    XBOOLE_0:def 4;
    
      
    
      
    
    A5: c 
    in ( 
    dom (f 
    | X)) by 
    A3,
    XBOOLE_0:def 4;
    
      then c
    in (( 
    dom f) 
    /\ X) by 
    RELAT_1: 61;
    
      then c
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
      then c
    in (Y 
    /\ ( 
    dom f)) by 
    A4,
    XBOOLE_0:def 4;
    
      then (f
    /. c) 
    = d by 
    A1;
    
      then ((f
    | X) 
    /. c) 
    = d by 
    A5,
    Th15;
    
      then (((f
    | X) 
    | Y) 
    /. c) 
    = d by 
    A3,
    Th16;
    
      hence thesis by
    A2,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:44
    
    ((SC
    --> d) 
    | SC) is 
    constant
    
    proof
    
      take d;
    
      let c;
    
      assume
    
      
    
    A1: c 
    in ( 
    dom ((SC 
    --> d) 
    | SC)); 
    
      then
    
      
    
    A2: c 
    in (SC 
    /\ ( 
    dom (SC 
    --> d))) by 
    RELAT_1: 61;
    
      then c
    in SC by 
    XBOOLE_0:def 4;
    
      then ((SC
    --> d) 
    /. c) 
    = d by 
    Th29;
    
      then (((SC
    --> d) 
    | SC) 
    /. c) 
    = d by 
    A2,
    Th16;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:45
    
    (
    dom f) 
    c= ( 
    dom g) & (for c st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = (g 
    /. c)) implies f 
    c= g 
    
    proof
    
      assume that
    
      
    
    A1: ( 
    dom f) 
    c= ( 
    dom g) and 
    
      
    
    A2: for c st c 
    in ( 
    dom f) holds (f 
    /. c) 
    = (g 
    /. c); 
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A3: x 
    in ( 
    dom f); 
    
        then
    
        reconsider x1 = x as
    Element of C; 
    
        (f
    /. x1) 
    = (g 
    /. x1) by 
    A2,
    A3;
    
        then (f qua
    Function
    . x) 
    = (g 
    /. x1) by 
    A3,
    PARTFUN1:def 6;
    
        hence (f qua
    Function
    . x) 
    = (g qua 
    Function
    . x) by 
    A1,
    A3,
    PARTFUN1:def 6;
    
      end;
    
      hence thesis by
    A1,
    GRFUNC_1: 2;
    
    end;
    
    theorem :: 
    
    PARTFUN2:46
    
    
    
    
    
    Th46: c 
    in ( 
    dom f) & d 
    = (f 
    /. c) iff 
    [c, d]
    in f 
    
    proof
    
      thus c
    in ( 
    dom f) & d 
    = (f 
    /. c) implies 
    [c, d]
    in f 
    
      proof
    
        assume that
    
        
    
    A1: c 
    in ( 
    dom f) and 
    
        
    
    A2: d 
    = (f 
    /. c); 
    
        d
    = (f qua 
    Function
    . c) by 
    A1,
    A2,
    PARTFUN1:def 6;
    
        hence thesis by
    A1,
    FUNCT_1: 1;
    
      end;
    
      assume
    [c, d]
    in f; 
    
      then c
    in ( 
    dom f) & d 
    = (f qua 
    Function
    . c) by 
    FUNCT_1: 1;
    
      hence thesis by
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:47
    
    
    [c, e]
    in (s 
    * f) implies 
    [c, (f
    /. c)] 
    in f & 
    [(f
    /. c), e] 
    in s 
    
    proof
    
      assume
    
      
    
    A1: 
    [c, e]
    in (s 
    * f); 
    
      then
    
      
    
    A2: 
    [(f qua
    Function
    . c), e] 
    in s by 
    GRFUNC_1: 4;
    
      
    
      
    
    A3: 
    [c, (f qua
    Function
    . c)] 
    in f by 
    A1,
    GRFUNC_1: 4;
    
      then c
    in ( 
    dom f) by 
    FUNCT_1: 1;
    
      hence thesis by
    A3,
    A2,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:48
    
    f
    =  
    {
    [c, d]} implies (f
    /. c) 
    = d 
    
    proof
    
      assume
    
      
    
    A1: f 
    =  
    {
    [c, d]};
    
      then
    [c, d]
    in f by 
    TARSKI:def 1;
    
      then
    
      
    
    A2: c 
    in ( 
    dom f) by 
    FUNCT_1: 1;
    
      (f qua
    Function
    . c) 
    = d by 
    A1,
    GRFUNC_1: 6;
    
      hence thesis by
    A2,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:49
    
    (
    dom f) 
    =  
    {c} implies f
    =  
    {
    [c, (f
    /. c)]} 
    
    proof
    
      assume (
    dom f) 
    =  
    {c};
    
      then c
    in ( 
    dom f) & f 
    =  
    {
    [c, (f qua
    Function
    . c)]} by 
    GRFUNC_1: 7,
    TARSKI:def 1;
    
      hence thesis by
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:50
    
    f1
    = (f 
    /\ g) & c 
    in ( 
    dom f1) implies (f1 
    /. c) 
    = (f 
    /. c) & (f1 
    /. c) 
    = (g 
    /. c) 
    
    proof
    
      assume that
    
      
    
    A1: f1 
    = (f 
    /\ g) and 
    
      
    
    A2: c 
    in ( 
    dom f1); 
    
      (f1 qua
    Function
    . c) 
    = (g qua 
    Function
    . c) by 
    A1,
    A2,
    GRFUNC_1: 11;
    
      then
    
      
    
    A3: (f1 
    /. c) 
    = (g qua 
    Function
    . c) by 
    A2,
    PARTFUN1:def 6;
    
      
    
      
    
    A4: 
    [c, (f1 qua
    Function
    . c)] 
    in f1 by 
    A2,
    FUNCT_1: 1;
    
      then
    [c, (f1 qua
    Function
    . c)] 
    in f by 
    A1,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A5: c 
    in ( 
    dom f) by 
    FUNCT_1: 1;
    
      
    [c, (f1 qua
    Function
    . c)] 
    in g by 
    A1,
    A4,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A6: c 
    in ( 
    dom g) by 
    FUNCT_1: 1;
    
      (f1 qua
    Function
    . c) 
    = (f qua 
    Function
    . c) by 
    A1,
    A2,
    GRFUNC_1: 11;
    
      then (f1
    /. c) 
    = (f qua 
    Function
    . c) by 
    A2,
    PARTFUN1:def 6;
    
      hence thesis by
    A5,
    A6,
    A3,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:51
    
    c
    in ( 
    dom f) & f1 
    = (f 
    \/ g) implies (f1 
    /. c) 
    = (f 
    /. c) 
    
    proof
    
      assume that
    
      
    
    A1: c 
    in ( 
    dom f) and 
    
      
    
    A2: f1 
    = (f 
    \/ g); 
    
      
    [c, (f qua
    Function
    . c)] 
    in f by 
    A1,
    FUNCT_1: 1;
    
      then
    [c, (f qua
    Function
    . c)] 
    in f1 by 
    A2,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A3: c 
    in ( 
    dom f1) by 
    FUNCT_1: 1;
    
      (f1 qua
    Function
    . c) 
    = (f qua 
    Function
    . c) by 
    A1,
    A2,
    GRFUNC_1: 15;
    
      then (f1
    /. c) 
    = (f qua 
    Function
    . c) by 
    A3,
    PARTFUN1:def 6;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:52
    
    c
    in ( 
    dom g) & f1 
    = (f 
    \/ g) implies (f1 
    /. c) 
    = (g 
    /. c) 
    
    proof
    
      assume that
    
      
    
    A1: c 
    in ( 
    dom g) and 
    
      
    
    A2: f1 
    = (f 
    \/ g); 
    
      
    [c, (g qua
    Function
    . c)] 
    in g by 
    A1,
    FUNCT_1: 1;
    
      then
    [c, (g qua
    Function
    . c)] 
    in f1 by 
    A2,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A3: c 
    in ( 
    dom f1) by 
    FUNCT_1: 1;
    
      (f1 qua
    Function
    . c) 
    = (g qua 
    Function
    . c) by 
    A1,
    A2,
    GRFUNC_1: 15;
    
      then (f1
    /. c) 
    = (g qua 
    Function
    . c) by 
    A3,
    PARTFUN1:def 6;
    
      hence thesis by
    A1,
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:53
    
    c
    in ( 
    dom f1) & f1 
    = (f 
    \/ g) implies (f1 
    /. c) 
    = (f 
    /. c) or (f1 
    /. c) 
    = (g 
    /. c) 
    
    proof
    
      assume that
    
      
    
    A1: c 
    in ( 
    dom f1) and 
    
      
    
    A2: f1 
    = (f 
    \/ g); 
    
      
    [c, (f1
    /. c)] 
    in f1 by 
    A1,
    Th46;
    
      then
    
      
    
    A3: 
    [c, (f1
    /. c)] 
    in f or 
    [c, (f1
    /. c)] 
    in g by 
    A2,
    XBOOLE_0:def 3;
    
      now
    
        per cases by
    A3,
    FUNCT_1: 1;
    
          suppose c
    in ( 
    dom f); 
    
          then
    [c, (f
    /. c)] 
    in f by 
    Th46;
    
          then
    [c, (f
    /. c)] 
    in f1 by 
    A2,
    XBOOLE_0:def 3;
    
          hence thesis by
    Th46;
    
        end;
    
          suppose c
    in ( 
    dom g); 
    
          then
    [c, (g
    /. c)] 
    in g by 
    Th46;
    
          then
    [c, (g
    /. c)] 
    in f1 by 
    A2,
    XBOOLE_0:def 3;
    
          hence thesis by
    Th46;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    PARTFUN2:54
    
    c
    in ( 
    dom f) & c 
    in SC iff 
    [c, (f
    /. c)] 
    in (f 
    | SC) 
    
    proof
    
      thus c
    in ( 
    dom f) & c 
    in SC implies 
    [c, (f
    /. c)] 
    in (f 
    | SC) 
    
      proof
    
        assume that
    
        
    
    A1: c 
    in ( 
    dom f) and 
    
        
    
    A2: c 
    in SC; 
    
        
    [c, (f qua
    Function
    . c)] 
    in (f 
    | SC) by 
    A1,
    A2,
    GRFUNC_1: 22;
    
        hence thesis by
    A1,
    PARTFUN1:def 6;
    
      end;
    
      assume
    [c, (f
    /. c)] 
    in (f 
    | SC); 
    
      then c
    in ( 
    dom (f 
    | SC)) by 
    FUNCT_1: 1;
    
      then c
    in (( 
    dom f) 
    /\ SC) by 
    RELAT_1: 61;
    
      hence thesis by
    XBOOLE_0:def 4;
    
    end;
    
    theorem :: 
    
    PARTFUN2:55
    
    c
    in ( 
    dom f) & (f 
    /. c) 
    in SD iff 
    [c, (f
    /. c)] 
    in (SD 
    |` f) 
    
    proof
    
      thus c
    in ( 
    dom f) & (f 
    /. c) 
    in SD implies 
    [c, (f
    /. c)] 
    in (SD 
    |` f) 
    
      proof
    
        assume that
    
        
    
    A1: c 
    in ( 
    dom f) and 
    
        
    
    A2: (f 
    /. c) 
    in SD; 
    
        (f qua
    Function
    . c) 
    in SD by 
    A1,
    A2,
    PARTFUN1:def 6;
    
        then
    [c, (f qua
    Function
    . c)] 
    in (SD 
    |` f) by 
    A1,
    GRFUNC_1: 24;
    
        hence thesis by
    A1,
    PARTFUN1:def 6;
    
      end;
    
      assume
    [c, (f
    /. c)] 
    in (SD 
    |` f); 
    
      then c
    in ( 
    dom (SD 
    |` f)) by 
    FUNCT_1: 1;
    
      then c
    in ( 
    dom f) & (f qua 
    Function
    . c) 
    in SD by 
    FUNCT_1: 54;
    
      hence thesis by
    PARTFUN1:def 6;
    
    end;
    
    theorem :: 
    
    PARTFUN2:56
    
    c
    in (f 
    " SD) iff 
    [c, (f
    /. c)] 
    in f & (f 
    /. c) 
    in SD 
    
    proof
    
      thus c
    in (f 
    " SD) implies 
    [c, (f
    /. c)] 
    in f & (f 
    /. c) 
    in SD 
    
      proof
    
        assume
    
        
    
    A1: c 
    in (f 
    " SD); 
    
        then
    
        
    
    A2: (f qua 
    Function
    . c) 
    in SD by 
    GRFUNC_1: 26;
    
        
    
        
    
    A3: 
    [c, (f qua
    Function
    . c)] 
    in f by 
    A1,
    GRFUNC_1: 26;
    
        then c
    in ( 
    dom f) by 
    FUNCT_1: 1;
    
        hence thesis by
    A3,
    A2,
    PARTFUN1:def 6;
    
      end;
    
      assume that
    
      
    
    A4: 
    [c, (f
    /. c)] 
    in f and 
    
      
    
    A5: (f 
    /. c) 
    in SD; 
    
      c
    in ( 
    dom f) by 
    A4,
    Th46;
    
      hence thesis by
    A5,
    Th26;
    
    end;
    
    theorem :: 
    
    PARTFUN2:57
    
    
    
    
    
    Th57: (f 
    | X) is 
    constant iff ex d st for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c) 
    = d 
    
    proof
    
      hereby
    
        assume (f
    | X) is 
    constant;
    
        then
    
        consider d such that
    
        
    
    A1: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    /. c) 
    = d by 
    Th35;
    
        take d;
    
        let c;
    
        assume
    
        
    
    A2: c 
    in (X 
    /\ ( 
    dom f)); 
    
        then c
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
        
    
        hence (f
    . c) 
    = (f 
    /. c) by 
    PARTFUN1:def 6
    
        .= d by
    A1,
    A2;
    
      end;
    
      given d such that
    
      
    
    A3: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c) 
    = d; 
    
      take d;
    
      let c;
    
      assume
    
      
    
    A4: c 
    in ( 
    dom (f 
    | X)); 
    
      then
    
      
    
    A5: c 
    in (X 
    /\ ( 
    dom f)) by 
    RELAT_1: 61;
    
      then
    
      
    
    A6: c 
    in ( 
    dom f) by 
    XBOOLE_0:def 4;
    
      
    
      thus ((f
    | X) 
    . c) 
    = ((f 
    | X) 
    /. c) by 
    A4,
    PARTFUN1:def 6
    
      .= (f
    /. c) by 
    A5,
    Th16
    
      .= (f
    . c) by 
    A6,
    PARTFUN1:def 6
    
      .= d by
    A3,
    A5;
    
    end;
    
    theorem :: 
    
    PARTFUN2:58
    
    (f
    | X) is 
    constant iff for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c1) 
    = (f 
    . c2) 
    
    proof
    
      thus (f
    | X) is 
    constant implies for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c1) 
    = (f 
    . c2) 
    
      proof
    
        assume (f
    | X) is 
    constant;
    
        then
    
        consider d such that
    
        
    
    A1: for c st c 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c) 
    = d by 
    Th57;
    
        let c1, c2;
    
        assume that
    
        
    
    A2: c1 
    in (X 
    /\ ( 
    dom f)) and 
    
        
    
    A3: c2 
    in (X 
    /\ ( 
    dom f)); 
    
        (f
    . c1) 
    = d by 
    A1,
    A2;
    
        hence thesis by
    A1,
    A3;
    
      end;
    
      assume
    
      
    
    A4: for c1, c2 st c1 
    in (X 
    /\ ( 
    dom f)) & c2 
    in (X 
    /\ ( 
    dom f)) holds (f 
    . c1) 
    = (f 
    . c2); 
    
      now
    
        per cases ;
    
          suppose
    
          
    
    A5: (X 
    /\ ( 
    dom f)) 
    =  
    {} ; 
    
          now
    
            set d = the
    Element of D; 
    
            take d;
    
            let c;
    
            thus c
    in (X 
    /\ ( 
    dom f)) implies (f 
    . c) 
    = d by 
    A5;
    
          end;
    
          hence thesis by
    Th57;
    
        end;
    
          suppose
    
          
    
    A6: (X 
    /\ ( 
    dom f)) 
    <>  
    {} ; 
    
          set x = the
    Element of (X 
    /\ ( 
    dom f)); 
    
          now
    
            let c;
    
            
    
            
    
    A7: x 
    in ( 
    dom f) by 
    A6,
    XBOOLE_0:def 4;
    
            assume c
    in (X 
    /\ ( 
    dom f)); 
    
            
    
            hence (f
    . c) 
    = (f 
    . x) by 
    A4,
    A7
    
            .= (f
    /. x) by 
    A7,
    PARTFUN1:def 6;
    
          end;
    
          hence thesis by
    Th57;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    PARTFUN2:59
    
    d
    in (f 
    .: X) implies ex c st c 
    in ( 
    dom f) & c 
    in X & d 
    = (f 
    . c) 
    
    proof
    
      assume d
    in (f 
    .: X); 
    
      then
    
      consider x be
    object such that 
    
      
    
    A1: x 
    in ( 
    dom f) and 
    
      
    
    A2: x 
    in X & d 
    = (f qua 
    Function
    . x) by 
    FUNCT_1:def 6;
    
      reconsider x as
    Element of C by 
    A1;
    
      take x;
    
      thus thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    PARTFUN2:60
    
    f is
    one-to-one implies (d 
    in ( 
    rng f) & c 
    = ((f 
    " ) 
    . d) iff c 
    in ( 
    dom f) & d 
    = (f 
    . c)) 
    
    proof
    
      
    
      
    
    A1: (f 
    " ) 
    = (f qua 
    Function
    " ); 
    
      assume f is
    one-to-one;
    
      hence thesis by
    A1,
    FUNCT_1: 32;
    
    end;
    
    theorem :: 
    
    PARTFUN2:61
    
    for Y holds for f,g be Y
    -valued  
    Function st f 
    c= g holds for x st x 
    in ( 
    dom f) holds (f 
    /. x) 
    = (g 
    /. x) 
    
    proof
    
      let Y;
    
      let f,g be Y
    -valued  
    Function;
    
      assume
    
      
    
    A1: f 
    c= g; 
    
      then
    
      
    
    A2: ( 
    dom f) 
    c= ( 
    dom g) by 
    GRFUNC_1: 2;
    
      let x;
    
      assume
    
      
    
    A3: x 
    in ( 
    dom f); 
    
      then (f
    . x) 
    = (g 
    . x) by 
    A1,
    GRFUNC_1: 2;
    
      then (f
    /. x) 
    = (g qua 
    Function
    . x) by 
    A3,
    PARTFUN1:def 6;
    
      hence thesis by
    A2,
    A3,
    PARTFUN1:def 6;
    
    end;