nomin_9.miz
    
    begin
    
    registration
    
      let n be
    Nat;
    
      let f be n
    -element  
    FinSequence;
    
      reduce (f
    | ( 
    Seg n)) to f; 
    
      reducibility
    
      proof
    
        (
    len f) 
    = n by 
    CARD_1:def 7;
    
        then (f
    | n) 
    = f; 
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let A,B be
    set;
    
      let f1,f2,f3,f4,f5,f6 be
    PartFunc of A, B; 
    
      cluster 
    <*f1, f2, f3, f4, f5, f6*> -> (
    PFuncs (A,B)) 
    -valued;
    
      coherence
    
      proof
    
        
    {f1, f2, f3, f4, f5, f6}
    c= ( 
    PFuncs (A,B)) 
    
        proof
    
          let x be
    object;
    
          assume x
    in  
    {f1, f2, f3, f4, f5, f6};
    
          then x
    = f1 or x 
    = f2 or x 
    = f3 or x 
    = f4 or x 
    = f5 or x 
    = f6 by 
    ENUMSET1:def 4;
    
          hence thesis by
    PARTFUN1: 45;
    
        end;
    
        hence (
    rng  
    <*f1, f2, f3, f4, f5, f6*>)
    c= ( 
    PFuncs (A,B)) by 
    AOFA_A00: 21;
    
      end;
    
    end
    
    registration
    
      let V,A be
    set;
    
      let f1,f2,f3,f4,f5,f6 be
    SCBinominativeFunction of V, A; 
    
      cluster 
    <*f1, f2, f3, f4, f5, f6*> -> (
    FPrg ( 
    ND (V,A))) 
    -valued;
    
      coherence ;
    
    end
    
    registration
    
      let a1,a2,a3,a4,a5,a6 be
    object;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 1) to a1; 
    
      reducibility by
    AOFA_A00: 20;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 2) to a2; 
    
      reducibility by
    AOFA_A00: 20;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 3) to a3; 
    
      reducibility by
    AOFA_A00: 20;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 4) to a4; 
    
      reducibility by
    AOFA_A00: 20;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 5) to a5; 
    
      reducibility by
    AOFA_A00: 20;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6*>
    . 6) to a6; 
    
      reducibility by
    AOFA_A00: 20;
    
    end
    
    definition
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    object;
    
      :: 
    
    NOMIN_9:def1
    
      func
    
    <*a1,a2,a3,a4,a5,a6,a7,a8,a9*> ->
    FinSequence equals ( 
    <*a1, a2, a3, a4, a5, a6, a7, a8*>
    ^  
    <*a9*>);
    
      coherence ;
    
    end
    
    theorem :: 
    
    NOMIN_9:1
    
    
    
    
    
    Th1: for a1,a2,a3,a4,a5,a6,a7,a8,a9 be 
    object holds for f be 
    FinSequence holds f 
    =  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*> iff (
    len f) 
    = 9 & (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9 
    
    proof
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    object;
    
      let f be
    FinSequence;
    
      set AS1 =
    <*a9*>;
    
      set AS8 =
    <*a1, a2, a3, a4, a5, a6, a7, a8*>;
    
      set AS9 =
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>;
    
      
    
    A1: 
    
      now
    
        let f be
    FinSequence;
    
        assume
    
        
    
    A2: f 
    = AS9; 
    
        
    
        hence (
    len f) 
    = (( 
    len AS8) 
    + ( 
    len AS1)) by 
    FINSEQ_1: 22
    
        .= (8
    + ( 
    len AS1)) by 
    AOFA_A00: 24
    
        .= (8
    + 1) by 
    FINSEQ_1: 39
    
        .= 9;
    
        (
    dom AS8) 
    = ( 
    Seg 8) by 
    FINSEQ_1: 89;
    
        then 1
    in ( 
    dom AS8) & 2 
    in ( 
    dom AS8) & 3 
    in ( 
    dom AS8) & 4 
    in ( 
    dom AS8) & 5 
    in ( 
    dom AS8) & 6 
    in ( 
    dom AS8) & 7 
    in ( 
    dom AS8) & 8 
    in ( 
    dom AS8); 
    
        then (f
    . 1) 
    = (AS8 
    . 1) & (f 
    . 2) 
    = (AS8 
    . 2) & (f 
    . 3) 
    = (AS8 
    . 3) & (f 
    . 4) 
    = (AS8 
    . 4) & (f 
    . 5) 
    = (AS8 
    . 5) & (f 
    . 6) 
    = (AS8 
    . 6) & (f 
    . 7) 
    = (AS8 
    . 7) & (f 
    . 8) 
    = (AS8 
    . 8) by 
    A2,
    FINSEQ_1:def 7;
    
        hence (f
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 by 
    AOFA_A00: 24;
    
        (
    len AS8) 
    = 8 by 
    AOFA_A00: 24;
    
        hence (f
    . 9) 
    = a9 by 
    A2;
    
      end;
    
      hence f
    = AS9 implies ( 
    len f) 
    = 9 & (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9; 
    
      assume
    
      
    
    A3: ( 
    len f) 
    = 9; 
    
      (
    len AS9) 
    = 9 by 
    A1;
    
      then
    
      
    
    A4: ( 
    dom f) 
    = ( 
    Seg 9) & ( 
    dom AS9) 
    = ( 
    Seg 9) by 
    A3,
    FINSEQ_1:def 3;
    
      assume
    
      
    
    A5: (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9; 
    
      now
    
        let x be
    object;
    
        assume x
    in ( 
    Seg 9); 
    
        then x
    = 1 or x 
    = 2 or x 
    = 3 or x 
    = 4 or x 
    = 5 or x 
    = 6 or x 
    = 7 or x 
    = 8 or x 
    = 9 by 
    AOFA_A00: 27,
    ENUMSET1:def 7;
    
        hence (f
    . x) 
    = (AS9 
    . x) by 
    A1,
    A5;
    
      end;
    
      hence f
    = AS9 by 
    A4,
    FUNCT_1: 2;
    
    end;
    
    registration
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    object;
    
      cluster 
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*> -> 9
    -element;
    
      coherence ;
    
    end
    
    registration
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    object;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 1) to a1; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 2) to a2; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 3) to a3; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 4) to a4; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 5) to a5; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 6) to a6; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 7) to a7; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 8) to a8; 
    
      reducibility by
    Th1;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    . 9) to a9; 
    
      reducibility by
    Th1;
    
    end
    
    theorem :: 
    
    NOMIN_9:2
    
    
    
    
    
    Th2: for a1,a2,a3,a4,a5,a6,a7,a8,a9 be 
    object holds ( 
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>)
    =  
    {a1, a2, a3, a4, a5, a6, a7, a8, a9}
    
    proof
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    object;
    
      
    
      thus (
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>)
    = (( 
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8*>)
    \/ ( 
    rng  
    <*a9*>)) by
    FINSEQ_1: 31
    
      .= (
    {a1, a2, a3, a4, a5, a6, a7, a8}
    \/ ( 
    rng  
    <*a9*>)) by
    AOFA_A00: 25
    
      .= (
    {a1, a2, a3, a4, a5, a6, a7, a8}
    \/  
    {a9}) by
    FINSEQ_1: 38
    
      .=
    {a1, a2, a3, a4, a5, a6, a7, a8, a9} by
    ENUMSET1: 84;
    
    end;
    
    definition
    
      let X be non
    empty  
    set;
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9 be
    Element of X; 
    
      :: original:
    <*
    
      redefine
    
      func
    
    <*a1,a2,a3,a4,a5,a6,a7,a8,a9*> ->
    FinSequence of X ; 
    
      coherence
    
      proof
    
        
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    = ( 
    <*a1, a2, a3, a4, a5, a6, a7, a8*>
    ^  
    <*a9*>);
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object;
    
      :: 
    
    NOMIN_9:def2
    
      func
    
    <*a1,a2,a3,a4,a5,a6,a7,a8,a9,a10*> ->
    FinSequence equals ( 
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    ^  
    <*a10*>);
    
      coherence ;
    
    end
    
    theorem :: 
    
    NOMIN_9:3
    
    
    
    
    
    Th3: for a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be 
    object holds for f be 
    FinSequence holds f 
    =  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*> iff (
    len f) 
    = 10 & (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9 & (f 
    . 10) 
    = a10 
    
    proof
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object;
    
      let f be
    FinSequence;
    
      set AS1 =
    <*a10*>;
    
      set AS9 =
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>;
    
      set AS10 =
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>;
    
      
    
    A1: 
    
      now
    
        let f be
    FinSequence;
    
        assume
    
        
    
    A2: f 
    = AS10; 
    
        
    
        hence (
    len f) 
    = (( 
    len AS9) 
    + ( 
    len AS1)) by 
    FINSEQ_1: 22
    
        .= (9
    + ( 
    len AS1)) by 
    Th1
    
        .= (9
    + 1) by 
    FINSEQ_1: 39
    
        .= 10;
    
        (
    dom AS9) 
    = ( 
    Seg 9) by 
    FINSEQ_1: 89;
    
        then 1
    in ( 
    dom AS9) & 2 
    in ( 
    dom AS9) & 3 
    in ( 
    dom AS9) & 4 
    in ( 
    dom AS9) & 5 
    in ( 
    dom AS9) & 6 
    in ( 
    dom AS9) & 7 
    in ( 
    dom AS9) & 8 
    in ( 
    dom AS9) & 9 
    in ( 
    dom AS9); 
    
        then (f
    . 1) 
    = (AS9 
    . 1) & (f 
    . 2) 
    = (AS9 
    . 2) & (f 
    . 3) 
    = (AS9 
    . 3) & (f 
    . 4) 
    = (AS9 
    . 4) & (f 
    . 5) 
    = (AS9 
    . 5) & (f 
    . 6) 
    = (AS9 
    . 6) & (f 
    . 7) 
    = (AS9 
    . 7) & (f 
    . 8) 
    = (AS9 
    . 8) & (f 
    . 9) 
    = (AS9 
    . 9) by 
    A2,
    FINSEQ_1:def 7;
    
        hence (f
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9; 
    
        (
    len AS9) 
    = 9 by 
    Th1;
    
        hence (f
    . 10) 
    = a10 by 
    A2;
    
      end;
    
      hence f
    = AS10 implies ( 
    len f) 
    = 10 & (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9 & (f 
    . 10) 
    = a10; 
    
      assume
    
      
    
    A3: ( 
    len f) 
    = 10; 
    
      (
    len AS10) 
    = 10 by 
    A1;
    
      then
    
      
    
    A4: ( 
    dom f) 
    = ( 
    Seg 10) & ( 
    dom AS10) 
    = ( 
    Seg 10) by 
    A3,
    FINSEQ_1:def 3;
    
      assume
    
      
    
    A5: (f 
    . 1) 
    = a1 & (f 
    . 2) 
    = a2 & (f 
    . 3) 
    = a3 & (f 
    . 4) 
    = a4 & (f 
    . 5) 
    = a5 & (f 
    . 6) 
    = a6 & (f 
    . 7) 
    = a7 & (f 
    . 8) 
    = a8 & (f 
    . 9) 
    = a9 & (f 
    . 10) 
    = a10; 
    
      now
    
        let x be
    object;
    
        assume x
    in ( 
    Seg 10); 
    
        then x
    = 1 or x 
    = 2 or x 
    = 3 or x 
    = 4 or x 
    = 5 or x 
    = 6 or x 
    = 7 or x 
    = 8 or x 
    = 9 or x 
    = 10 by 
    AOFA_A00: 28,
    ENUMSET1:def 8;
    
        hence (f
    . x) 
    = (AS10 
    . x) by 
    A1,
    A5;
    
      end;
    
      hence f
    = AS10 by 
    A4,
    FUNCT_1: 2;
    
    end;
    
    registration
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object;
    
      cluster 
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*> -> 10
    -element;
    
      coherence ;
    
    end
    
    registration
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 1) to a1; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 2) to a2; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 3) to a3; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 4) to a4; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 5) to a5; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 6) to a6; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 7) to a7; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 8) to a8; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 9) to a9; 
    
      reducibility by
    Th3;
    
      reduce (
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    . 10) to a10; 
    
      reducibility by
    Th3;
    
    end
    
    theorem :: 
    
    NOMIN_9:4
    
    for a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object holds ( 
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>)
    =  
    {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10}
    
    proof
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    object;
    
      
    
      thus (
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>)
    = (( 
    rng  
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>)
    \/ ( 
    rng  
    <*a10*>)) by
    FINSEQ_1: 31
    
      .= (
    {a1, a2, a3, a4, a5, a6, a7, a8, a9}
    \/ ( 
    rng  
    <*a10*>)) by
    Th2
    
      .= (
    {a1, a2, a3, a4, a5, a6, a7, a8, a9}
    \/  
    {a10}) by
    FINSEQ_1: 38
    
      .=
    {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10} by
    ENUMSET1: 85;
    
    end;
    
    definition
    
      let X be non
    empty  
    set;
    
      let a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 be
    Element of X; 
    
      :: original:
    <*
    
      redefine
    
      func
    
    <*a1,a2,a3,a4,a5,a6,a7,a8,a9,a10*> ->
    FinSequence of X ; 
    
      coherence
    
      proof
    
        
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9, a10*>
    = ( 
    <*a1, a2, a3, a4, a5, a6, a7, a8, a9*>
    ^  
    <*a10*>);
    
        hence thesis;
    
      end;
    
    end
    
    begin
    
    definition
    
      let i,j be
    Integer;
    
      :: original:
    [
    
      redefine
    
      func
    
    [i,j] ->
    Element of 
    [:
    INT , 
    INT :] ; 
    
      coherence
    
      proof
    
        reconsider i, j as
    Element of 
    INT by 
    INT_1:def 2;
    
        
    [i, j] is
    Element of 
    [:
    INT , 
    INT :]; 
    
        hence thesis;
    
      end;
    
    end
    
    reserve x,y,P,Q for
    Integer;
    
    reserve a,b,n for
    Nat;
    
    reserve V,A for
    set;
    
    reserve val for
    Function;
    
    reserve loc for V
    -valued  
    Function;
    
    reserve d1 for
    NonatomicND of V, A; 
    
    reserve p for
    SCPartialNominativePredicate of V, A; 
    
    reserve d for
    object;
    
    reserve z for
    Element of V; 
    
    reserve T for
    TypeSCNominativeData of V, A; 
    
    reserve size for non
    zero  
    Nat;
    
    reserve x0,y0,p0,q0 for
    Integer;
    
    reserve n0 for
    Nat;
    
    definition
    
      let x, y, P, Q;
    
      deffunc
    
    F(
    set, 
    Element of 
    [:
    INT , 
    INT :]) = 
    [($2
    `2 ), ((P 
    * ($2 
    `2 )) 
    - (Q 
    * ($2 
    `1 )))]; 
    
      :: 
    
    NOMIN_9:def3
    
      func
    
    Lucas_Sequence (x,y,P,Q) -> 
    sequence of 
    [:
    INT , 
    INT :] means 
    
      :
    
    Def3: (it 
    .  
    0 ) 
    =  
    [x, y] & for n be
    Nat holds (it 
    . (n 
    + 1)) 
    =  
    [((it
    . n) 
    `2 ), ((P 
    * ((it 
    . n) 
    `2 )) 
    - (Q 
    * ((it 
    . n) 
    `1 )))]; 
    
      existence
    
      proof
    
        ex L be
    sequence of 
    [:
    INT , 
    INT :] st (L 
    .  
    0 ) 
    =  
    [x, y] & for n be
    Nat holds (L 
    . (n 
    + 1)) 
    =  
    F(n,.) from
    NAT_1:sch 12;
    
        hence thesis;
    
      end;
    
      uniqueness
    
      proof
    
        let L1,L2 be
    sequence of 
    [:
    INT , 
    INT :] such that 
    
        
    
    A1: (L1 
    .  
    0 ) 
    =  
    [x, y] and
    
        
    
    A2: for n be 
    Nat holds (L1 
    . (n 
    + 1)) 
    =  
    F(n,.) and
    
        
    
    A3: (L2 
    .  
    0 ) 
    =  
    [x, y] and
    
        
    
    A4: for n be 
    Nat holds (L2 
    . (n 
    + 1)) 
    =  
    F(n,.);
    
        thus L1
    = L2 from 
    NAT_1:sch 16(
    A1,
    A2,
    A3,
    A4);
    
      end;
    
    end
    
    definition
    
      let x, y, P, Q, n;
    
      :: 
    
    NOMIN_9:def4
    
      func
    
    Lucas (x,y,P,Q,n) -> 
    Element of 
    INT equals ((( 
    Lucas_Sequence (x,y,P,Q)) 
    . n) 
    `1 ); 
    
      coherence ;
    
    end
    
    theorem :: 
    
    NOMIN_9:5
    
    
    
    
    
    Th5: ( 
    Lucas (x,y,P,Q, 
    0 )) 
    = x & ( 
    Lucas (x,y,P,Q,1)) 
    = y & for n holds ( 
    Lucas (x,y,P,Q,(n 
    + 2))) 
    = ((P 
    * ( 
    Lucas (x,y,P,Q,(n 
    + 1)))) 
    - (Q 
    * ( 
    Lucas (x,y,P,Q,n)))) 
    
    proof
    
      set L = (
    Lucas_Sequence (x,y,P,Q)); 
    
      
    
      thus (
    Lucas (x,y,P,Q, 
    0 )) 
    = ( 
    [x, y]
    `1 ) by 
    Def3
    
      .= x;
    
      
    
      thus (
    Lucas (x,y,P,Q,1)) 
    = ((L 
    . ( 
    0  
    + 1)) 
    `1 ) 
    
      .= (
    [((L
    .  
    0 ) 
    `2 ), ((P 
    * ((L 
    .  
    0 ) 
    `2 )) 
    - (Q 
    * ((L 
    .  
    0 ) 
    `1 )))] 
    `1 ) by 
    Def3
    
      .= (
    [x, y]
    `2 ) by 
    Def3
    
      .= y;
    
      let n;
    
      
    
      
    
    A1: ((L 
    . (n 
    + 1)) 
    `1 ) 
    = ( 
    [((L
    . n) 
    `2 ), ((P 
    * ((L 
    . n) 
    `2 )) 
    - (Q 
    * ((L 
    . n) 
    `1 )))] 
    `1 ) by 
    Def3
    
      .= ((L
    . n) 
    `2 ); 
    
      (n
    + 2) 
    = ((n 
    + 1) 
    + 1); 
    
      
    
      hence (
    Lucas (x,y,P,Q,(n 
    + 2))) 
    = ( 
    [((L
    . (n 
    + 1)) 
    `2 ), ((P 
    * ((L 
    . (n 
    + 1)) 
    `2 )) 
    - (Q 
    * ((L 
    . (n 
    + 1)) 
    `1 )))] 
    `1 ) by 
    Def3
    
      .= (
    [((L
    . n) 
    `2 ), ((P 
    * ((L 
    . n) 
    `2 )) 
    - (Q 
    * ((L 
    . n) 
    `1 )))] 
    `2 ) by 
    Def3
    
      .= ((P
    * ( 
    Lucas (x,y,P,Q,(n 
    + 1)))) 
    - (Q 
    * ( 
    Lucas (x,y,P,Q,n)))) by 
    A1;
    
    end;
    
    theorem :: 
    
    NOMIN_9:6
    
    
    
    
    
    Th6: ( 
    Lucas_Sequence ( 
    0 ,1,1,( 
    - 1))) 
    =  
    Fib  
    
    proof
    
      set L = (
    Lucas_Sequence ( 
    0 ,1,1,( 
    - 1))); 
    
      set F =
    Fib ; 
    
      (
    dom F) 
    =  
    NAT & ( 
    dom L) 
    =  
    NAT by 
    FUNCT_2:def 1;
    
      hence (
    dom L) 
    = ( 
    dom F); 
    
      let n be
    object such that 
    
      
    
    A1: n 
    in ( 
    dom L); 
    
      defpred
    
    P[
    Nat] means (L
    . $1) 
    = (F 
    . $1); 
    
      (L
    .  
    0 ) 
    =  
    [
    0 , 1] by 
    Def3;
    
      then
    
      
    
    A2: 
    P[
    0 ] by 
    PRE_FF:def 1;
    
      
    
      
    
    A3: for k be 
    Nat st 
    P[k] holds
    P[(k
    + 1)] 
    
      proof
    
        let k be
    Nat such that 
    
        
    
    A4: 
    P[k];
    
        
    
        thus (L
    . (k 
    + 1)) 
    =  
    [((L
    . k) 
    `2 ), ((1 
    * ((L 
    . k) 
    `2 )) 
    - (( 
    - 1) 
    * ((L 
    . k) 
    `1 )))] by 
    Def3
    
        .=
    [((F
    . k) 
    `2 ), (((F 
    . k) 
    `1 ) 
    + ((F 
    . k) 
    `2 ))] by 
    A4
    
        .= (F
    . (k 
    + 1)) by 
    PRE_FF:def 1;
    
      end;
    
      for k be
    Nat holds 
    P[k] from
    NAT_1:sch 2(
    A2,
    A3);
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    NOMIN_9:7
    
    (
    Lucas ( 
    0 ,1,1,( 
    - 1),n)) 
    = ( 
    Fib n) by 
    Th6;
    
    theorem :: 
    
    NOMIN_9:8
    
    
    
    
    
    Th8: ( 
    Lucas_Sequence (a,b,1,( 
    - 1))) 
    = ( 
    GenFib (a,b)) 
    
    proof
    
      set L = (
    Lucas_Sequence (a,b,1,( 
    - 1))); 
    
      set F = (
    GenFib (a,b)); 
    
      (
    dom F) 
    =  
    NAT & ( 
    dom L) 
    =  
    NAT by 
    FUNCT_2:def 1;
    
      hence (
    dom L) 
    = ( 
    dom F); 
    
      let n be
    object such that 
    
      
    
    A1: n 
    in ( 
    dom L); 
    
      defpred
    
    P[
    Nat] means (L
    . $1) 
    = (F 
    . $1); 
    
      (L
    .  
    0 ) 
    =  
    [a, b] by
    Def3;
    
      then
    
      
    
    A2: 
    P[
    0 ] by 
    FIB_NUM3:def 3;
    
      
    
      
    
    A3: for k be 
    Nat st 
    P[k] holds
    P[(k
    + 1)] 
    
      proof
    
        let k be
    Nat such that 
    
        
    
    A4: 
    P[k];
    
        
    
        thus (L
    . (k 
    + 1)) 
    =  
    [((L
    . k) 
    `2 ), ((1 
    * ((L 
    . k) 
    `2 )) 
    - (( 
    - 1) 
    * ((L 
    . k) 
    `1 )))] by 
    Def3
    
        .=
    [((F
    . k) 
    `2 ), (((F 
    . k) 
    `1 ) 
    + ((F 
    . k) 
    `2 ))] by 
    A4
    
        .= (F
    . (k 
    + 1)) by 
    FIB_NUM3:def 3;
    
      end;
    
      for k be
    Nat holds 
    P[k] from
    NAT_1:sch 2(
    A2,
    A3);
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    NOMIN_9:9
    
    (
    Lucas (a,b,1,( 
    - 1),n)) 
    = ( 
    GenFib (a,b,n)) by 
    Th8;
    
    theorem :: 
    
    NOMIN_9:10
    
    
    
    
    
    Th10: ( 
    Lucas_Sequence (2,1,1,( 
    - 1))) 
    =  
    Lucas  
    
    proof
    
      set L = (
    Lucas_Sequence (2,1,1,( 
    - 1))); 
    
      set F =
    Lucas ; 
    
      (
    dom F) 
    =  
    NAT & ( 
    dom L) 
    =  
    NAT by 
    FUNCT_2:def 1;
    
      hence (
    dom L) 
    = ( 
    dom F); 
    
      let n be
    object such that 
    
      
    
    A1: n 
    in ( 
    dom L); 
    
      defpred
    
    P[
    Nat] means (L
    . $1) 
    = (F 
    . $1); 
    
      (L
    .  
    0 ) 
    =  
    [2, 1] by
    Def3;
    
      then
    
      
    
    A2: 
    P[
    0 ] by 
    FIB_NUM3:def 1;
    
      
    
      
    
    A3: for k be 
    Nat st 
    P[k] holds
    P[(k
    + 1)] 
    
      proof
    
        let k be
    Nat such that 
    
        
    
    A4: 
    P[k];
    
        
    
        thus (L
    . (k 
    + 1)) 
    =  
    [((L
    . k) 
    `2 ), ((1 
    * ((L 
    . k) 
    `2 )) 
    - (( 
    - 1) 
    * ((L 
    . k) 
    `1 )))] by 
    Def3
    
        .=
    [((F
    . k) 
    `2 ), (((F 
    . k) 
    `1 ) 
    + ((F 
    . k) 
    `2 ))] by 
    A4
    
        .= (F
    . (k 
    + 1)) by 
    FIB_NUM3:def 1;
    
      end;
    
      for k be
    Nat holds 
    P[k] from
    NAT_1:sch 2(
    A2,
    A3);
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    NOMIN_9:11
    
    (
    Lucas (2,1,1,( 
    - 1),n)) 
    = ( 
    Lucas n) by 
    Th10;
    
    begin
    
    theorem :: 
    
    NOMIN_9:12
    
    
    
    
    
    Th12: ( 
    Seg 10) 
    c= ( 
    dom loc) & loc 
    is_valid_wrt d1 implies 
    {(loc
    /. 1), (loc 
    /. 2), (loc 
    /. 3), (loc 
    /. 4), (loc 
    /. 5), (loc 
    /. 6), (loc 
    /. 7), (loc 
    /. 8), (loc 
    /. 9), (loc 
    /. 10)} 
    c= ( 
    dom d1) 
    
    proof
    
      assume that
    
      
    
    A1: ( 
    Seg 10) 
    c= ( 
    dom loc) and 
    
      
    
    A2: ( 
    rng loc) 
    c= ( 
    dom d1); 
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      let x be
    object;
    
      assume x
    in  
    {i, j, n, s, b, c, p, q, ps, qc};
    
      then
    
      
    
    A3: x 
    = i or x 
    = j or x 
    = n or x 
    = s or x 
    = b or x 
    = c or x 
    = p or x 
    = q or x 
    = ps or x 
    = qc by 
    ENUMSET1:def 8;
    
      
    
      
    
    A4: 1 
    in ( 
    Seg 10) & ... & 10 
    in ( 
    Seg 10); 
    
      then
    
      
    
    A5: (loc 
    . 1) 
    in ( 
    rng loc) & ... & (loc 
    . 10) 
    in ( 
    rng loc) by 
    A1,
    FUNCT_1:def 3;
    
      (loc
    . 1) 
    = (loc 
    /. 1) & ... & (loc 
    . 10) 
    = (loc 
    /. 10) by 
    A1,
    A4,
    PARTFUN1:def 6;
    
      hence thesis by
    A2,
    A3,
    A5;
    
    end;
    
    definition
    
      let V, A, loc;
    
      :: 
    
    NOMIN_9:def5
    
      func
    
    Lucas_loop_body (A,loc) -> 
    SCBinominativeFunction of V, A equals ( 
    PP_composition (( 
    SC_assignment (( 
    denaming (V,A,(loc 
    /. 4))),(loc 
    /. 6))),( 
    SC_assignment (( 
    denaming (V,A,(loc 
    /. 5))),(loc 
    /. 4))),( 
    SC_assignment (( 
    multiplication (A,(loc 
    /. 7),(loc 
    /. 4))),(loc 
    /. 9))),( 
    SC_assignment (( 
    multiplication (A,(loc 
    /. 8),(loc 
    /. 6))),(loc 
    /. 10))),( 
    SC_assignment (( 
    subtraction (A,(loc 
    /. 9),(loc 
    /. 10))),(loc 
    /. 5))),( 
    SC_assignment (( 
    addition (A,(loc 
    /. 1),(loc 
    /. 2))),(loc 
    /. 1))))); 
    
      coherence ;
    
    end
    
    definition
    
      let V, A, loc;
    
      :: 
    
    NOMIN_9:def6
    
      func
    
    Lucas_main_loop (A,loc) -> 
    SCBinominativeFunction of V, A equals ( 
    PP_while (( 
    PP_not ( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3)))),( 
    Lucas_loop_body (A,loc)))); 
    
      coherence ;
    
    end
    
    definition
    
      let V, A, loc, val;
    
      :: 
    
    NOMIN_9:def7
    
      func
    
    Lucas_main_part (A,loc,val) -> 
    SCBinominativeFunction of V, A equals ( 
    PP_composition (( 
    initial_assignments (A,loc,val,10)),( 
    Lucas_main_loop (A,loc)))); 
    
      coherence ;
    
    end
    
    definition
    
      let V, A, loc, val, z;
    
      :: 
    
    NOMIN_9:def8
    
      func
    
    Lucas_program (A,loc,val,z) -> 
    SCBinominativeFunction of V, A equals ( 
    PP_composition (( 
    Lucas_main_part (A,loc,val)),( 
    SC_assignment (( 
    denaming (V,A,(loc 
    /. 4))),z)))); 
    
      coherence ;
    
    end
    
    definition
    
      let x0, y0, p0, q0, n0;
    
      :: 
    
    NOMIN_9:def9
    
      func
    
    Lucas_input (x0,y0,p0,q0,n0) -> 
    FinSequence equals 
    <*
    0 , 1, n0, x0, y0, x0, p0, q0, 
    0 , 
    0 *>; 
    
      coherence ;
    
    end
    
    registration
    
      let x0, y0, p0, q0, n0;
    
      cluster ( 
    Lucas_input (x0,y0,p0,q0,n0)) -> 10 
    -element;
    
      coherence ;
    
    end
    
    definition
    
      let V, A, x0, y0, p0, q0, n0, d;
    
      let val be
    FinSequence;
    
      :: 
    
    NOMIN_9:def10
    
      pred
    
    valid_Lucas_input_pred V,A,val,x0,y0,p0,q0,n0,d means ( 
    Lucas_input (x0,y0,p0,q0,n0)) 
    is_valid_input (V,A,val,d); 
    
    end
    
    definition
    
      let V, A, x0, y0, p0, q0, n0;
    
      let val be
    FinSequence;
    
      defpred
    
    P[
    object] means
    valid_Lucas_input_pred (V,A,val,x0,y0,p0,q0,n0,$1); 
    
      :: 
    
    NOMIN_9:def11
    
      func
    
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0) -> 
    SCPartialNominativePredicate of V, A equals ( 
    valid_input (V,A,val,( 
    Lucas_input (x0,y0,p0,q0,n0)))); 
    
      coherence ;
    
    end
    
    registration
    
      let V, A, x0, y0, p0, q0, n0;
    
      let val be
    FinSequence;
    
      cluster ( 
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)) -> 
    total;
    
      coherence ;
    
    end
    
    definition
    
      let V, A, z, x0, y0, p0, q0, n0, d;
    
      :: 
    
    NOMIN_9:def12
    
      pred
    
    valid_Lucas_output_pred A,z,x0,y0,p0,q0,n0,d means 
    <*(
    Lucas (x0,y0,p0,q0,n0))*> 
    is_valid_output (V,A, 
    <*z*>,d);
    
    end
    
    definition
    
      let V, A, z, x0, y0, p0, q0, n0;
    
      :: 
    
    NOMIN_9:def13
    
      func
    
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0) -> 
    SCPartialNominativePredicate of V, A equals ( 
    valid_output (V,A,z,( 
    Lucas (x0,y0,p0,q0,n0)))); 
    
      coherence ;
    
    end
    
    definition
    
      let V, A, loc, x0, y0, p0, q0, n0, d;
    
      :: 
    
    NOMIN_9:def14
    
      pred
    
    Lucas_inv_pred A,loc,x0,y0,p0,q0,n0,d means ex d1 be 
    NonatomicND of V, A st d 
    = d1 & 
    {(loc
    /. 1), (loc 
    /. 2), (loc 
    /. 3), (loc 
    /. 4), (loc 
    /. 5), (loc 
    /. 6), (loc 
    /. 7), (loc 
    /. 8), (loc 
    /. 9), (loc 
    /. 10)} 
    c= ( 
    dom d1) & (d1 
    . (loc 
    /. 2)) 
    = 1 & (d1 
    . (loc 
    /. 3)) 
    = n0 & (d1 
    . (loc 
    /. 7)) 
    = p0 & (d1 
    . (loc 
    /. 8)) 
    = q0 & ex I be 
    Nat st I 
    = (d1 
    . (loc 
    /. 1)) & (d1 
    . (loc 
    /. 4)) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) & (d1 
    . (loc 
    /. 5)) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))); 
    
    end
    
    definition
    
      let V, A, loc, x0, y0, p0, q0, n0;
    
      defpred
    
    P[
    object] means
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,$1); 
    
      :: 
    
    NOMIN_9:def15
    
      func
    
    Lucas_inv (A,loc,x0,y0,p0,q0,n0) -> 
    SCPartialNominativePredicate of V, A means 
    
      :
    
    Def15: ( 
    dom it ) 
    = ( 
    ND (V,A)) & for d be 
    object st d 
    in ( 
    dom it ) holds ( 
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,d) implies (it 
    . d) 
    =  
    TRUE ) & ( not 
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,d) implies (it 
    . d) 
    =  
    FALSE ); 
    
      existence
    
      proof
    
        
    
        
    
    A1: ( 
    ND (V,A)) 
    c= ( 
    ND (V,A)); 
    
        consider p be
    SCPartialNominativePredicate of V, A such that 
    
        
    
    A2: ( 
    dom p) 
    = ( 
    ND (V,A)) & (for d be 
    object st d 
    in ( 
    dom p) holds ( 
    P[d] implies (p
    . d) 
    =  
    TRUE ) & ( not 
    P[d] implies (p
    . d) 
    =  
    FALSE )) from 
    PARTPR_2:sch 1(
    A1);
    
        take p;
    
        thus thesis by
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        for p,q be
    SCPartialNominativePredicate of V, A st (( 
    dom p) 
    = ( 
    ND (V,A)) & (for d be 
    object st d 
    in ( 
    dom p) holds ( 
    P[d] implies (p
    . d) 
    =  
    TRUE ) & ( not 
    P[d] implies (p
    . d) 
    =  
    FALSE ))) & (( 
    dom q) 
    = ( 
    ND (V,A)) & (for d be 
    object st d 
    in ( 
    dom q) holds ( 
    P[d] implies (q
    . d) 
    =  
    TRUE ) & ( not 
    P[d] implies (q
    . d) 
    =  
    FALSE ))) holds p 
    = q from 
    PARTPR_2:sch 2;
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let V, A, loc, x0, y0, p0, q0, n0;
    
      cluster ( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)) -> 
    total;
    
      coherence by
    Def15;
    
    end
    
    theorem :: 
    
    NOMIN_9:13
    
    
    
    
    
    Th13: for val be 10 
    -element  
    FinSequence holds V is non 
    empty & A 
    is_without_nonatomicND_wrt V & ( 
    Seg 10) 
    c= ( 
    dom loc) & (loc 
    | ( 
    Seg 10)) is 
    one-to-one & (loc,val) 
    are_different_wrt 10 implies ( 
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)) 
    ||= (( 
    SC_Psuperpos_Seq (loc,val,( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)))) 
    . ( 
    len ( 
    SC_Psuperpos_Seq (loc,val,( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)))))) 
    
    proof
    
      let val be 10
    -element  
    FinSequence;
    
      set size = 10;
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set i1 = (val
    . 1), j1 = (val 
    . 2), n1 = (val 
    . 3), s1 = (val 
    . 4), b1 = (val 
    . 5), c1 = (val 
    . 6); 
    
      set p1 = (val
    . 7), q1 = (val 
    . 8), ps1 = (val 
    . 9), qc1 = (val 
    . 10); 
    
      set EN =
    {i1, j1, n1, s1, b1, c1, p1, q1, ps1, qc1};
    
      set D = (
    ND (V,A)); 
    
      set I = (
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set DS = (
    denamingSeq (V,A,val)); 
    
      set SE = (
    SC_Psuperpos_Seq (loc,val,inv)); 
    
      set Q1 = (
    SC_Psuperpos ((SE 
    . 8),(DS 
    . 2),j)); 
    
      set P1 = (
    SC_Psuperpos (Q1,(DS 
    . 1),i)); 
    
      set inp = (
    Lucas_input (x0,y0,p0,q0,n0)); 
    
      assume that
    
      
    
    A1: V is non 
    empty and 
    
      
    
    A2: A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A3: ( 
    Seg 10) 
    c= ( 
    dom loc) and 
    
      
    
    A4: (loc 
    | ( 
    Seg 10)) is 
    one-to-one and 
    
      
    
    A5: (loc,val) 
    are_different_wrt 10; 
    
      
    
      
    
    A6: ( 
    Seg 10) 
    = ( 
    dom val) by 
    FINSEQ_1: 89;
    
      
    
      
    
    A7: ( 
    len val) 
    = 10 by 
    CARD_1:def 7;
    
      
    
      
    
    A8: ( 
    len SE) 
    = ( 
    len val) by 
    NOMIN_8:def 9;
    
      
    
      
    
    A9: ( 
    len inp) 
    = 10 by 
    CARD_1:def 7;
    
      
    
      
    
    A10: ( 
    len DS) 
    = 10 by 
    NOMIN_8:def 8,
    A7;
    
      
    
      
    
    A11: (DS 
    . 1) 
    = ( 
    denaming (V,A,(val 
    . 1))) by 
    NOMIN_8:def 8,
    A10;
    
      
    
      
    
    A12: (DS 
    . 2) 
    = ( 
    denaming (V,A,(val 
    . 2))) by 
    NOMIN_8:def 8,
    A10;
    
      
    
      
    
    A13: (DS 
    . 9) 
    = ( 
    denaming (V,A,(val 
    . 9))) by 
    NOMIN_8:def 8,
    A10;
    
      
    
      
    
    A14: (DS 
    . 10) 
    = ( 
    denaming (V,A,(val 
    . 10))) by 
    NOMIN_8:def 8,
    A10;
    
      
    
      
    
    A15: (SE 
    . (8 
    + 1)) 
    = ( 
    SC_Psuperpos ((SE 
    . 8),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 8)))),(loc 
    /. (( 
    len val) 
    - 8)))) by 
    A7,
    A8,
    NOMIN_8:def 9
    
      .= Q1 by
    NOMIN_8:def 8,
    A10,
    A7;
    
      
    
      
    
    A16: (SE 
    . (9 
    + 1)) 
    = ( 
    SC_Psuperpos ((SE 
    . 9),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 9)))),(loc 
    /. (( 
    len val) 
    - 9)))) by 
    A7,
    A8,
    NOMIN_8:def 9
    
      .= P1 by
    NOMIN_8:def 8,
    A10,
    A7,
    A15;
    
      let d be
    Element of D; 
    
      assume d
    in ( 
    dom I) & (I 
    . d) 
    =  
    TRUE ; 
    
      then (
    Lucas_input (x0,y0,p0,q0,n0)) 
    is_valid_input (V,A,val,d) by 
    NOMIN_8:def 11;
    
      then
    
      consider d1 be
    NonatomicND of V, A such that 
    
      
    
    A17: d 
    = d1 and 
    
      
    
    A18: val 
    is_valid_wrt d1 and 
    
      
    
    A19: for n be 
    Nat st 1 
    <= n 
    <= ( 
    len inp) holds (d1 
    . (val 
    . n)) 
    = (inp 
    . n); 
    
      
    
      
    
    A20: (d1 
    . i1) 
    = (inp 
    . 1) by 
    A9,
    A19
    
      .=
    0 ; 
    
      
    
      
    
    A21: (d1 
    . j1) 
    = (inp 
    . 2) by 
    A9,
    A19
    
      .= 1;
    
      
    
      
    
    A22: (d1 
    . n1) 
    = (inp 
    . 3) by 
    A9,
    A19
    
      .= n0;
    
      
    
      
    
    A23: (d1 
    . s1) 
    = (inp 
    . 4) by 
    A9,
    A19
    
      .= x0;
    
      
    
      
    
    A24: (d1 
    . b1) 
    = (inp 
    . 5) by 
    A9,
    A19
    
      .= y0;
    
      
    
      
    
    A25: (d1 
    . p1) 
    = (inp 
    . 7) by 
    A9,
    A19
    
      .= p0;
    
      
    
      
    
    A26: (d1 
    . q1) 
    = (inp 
    . 8) by 
    A9,
    A19
    
      .= q0;
    
      set F = (
    LocalOverlapSeq (A,loc,val,d1,size)); 
    
      
    
      
    
    A27: ( 
    len F) 
    = size by 
    NOMIN_7:def 4;
    
      then
    
      
    
    A28: (loc,val,size) 
    are_correct_wrt d1 by 
    A1,
    A2,
    A6,
    A18,
    FINSEQ_1:def 3;
    
      
    
      
    
    A29: ( 
    dom (DS 
    . 1)) 
    = { d where d be 
    NonatomicND of V, A : i1 
    in ( 
    dom d) } by 
    A11,
    NOMIN_1:def 18;
    
      
    
      
    
    A30: ( 
    dom P1) 
    = { d where d be 
    TypeSCNominativeData of V, A : ( 
    local_overlapping (V,A,d,((DS 
    . 1) 
    . d),i)) 
    in ( 
    dom Q1) & d 
    in ( 
    dom (DS 
    . 1)) } by 
    NOMIN_2:def 11;
    
      
    
      
    
    A31: ( 
    dom Q1) 
    = { d where d be 
    TypeSCNominativeData of V, A : ( 
    local_overlapping (V,A,d,((DS 
    . 2) 
    . d),j)) 
    in ( 
    dom (SE 
    . 8)) & d 
    in ( 
    dom (DS 
    . 2)) } by 
    NOMIN_2:def 11;
    
      1
    in ( 
    dom val) by 
    A6;
    
      then i1
    in ( 
    rng val) by 
    FUNCT_1:def 3;
    
      then
    
      
    
    A32: d1 
    in ( 
    dom (DS 
    . 1)) by 
    A18,
    A29;
    
      
    
      
    
    A33: (F 
    . 1) is 
    NonatomicND of V, A by 
    A27,
    NOMIN_7:def 6;
    
      reconsider Lqc = (F
    . 10) as 
    NonatomicND of V, A by 
    A27,
    NOMIN_7:def 6;
    
      
    
      
    
    A34: (F 
    . 1) 
    = ( 
    local_overlapping (V,A,d1,((DS 
    . 1) 
    . d1),i)) by 
    A11,
    NOMIN_7:def 4;
    
      
    
      
    
    A35: (F 
    . (1 
    + 1)) 
    = ( 
    local_overlapping (V,A,(F 
    . 1),((DS 
    . 2) 
    . (F 
    . 1)),j)) by 
    A12,
    A27,
    NOMIN_7:def 4;
    
      
    
      
    
    A36: (F 
    . 1) 
    in ( 
    dom (DS 
    . 2)) by 
    A12,
    A27,
    A28,
    NOMIN_8: 15;
    
      
    
      
    
    A37: ( 
    dom inv) 
    = D by 
    Def15;
    
      then
    
      
    
    A38: Lqc 
    in ( 
    dom inv); 
    
      
    
      
    
    A39: ((size 
    - 8) 
    - 1) 
    = 1; 
    
      
    
      
    
    A40: (8 
    + 1) 
    < size; 
    
      (
    local_overlapping (V,A,(F 
    . (size 
    - 1)),(( 
    denaming (V,A,(val 
    . ( 
    len val)))) 
    . (F 
    . (size 
    - 1))),(loc 
    /. ( 
    len val)))) 
    in ( 
    dom inv) by 
    A37;
    
      then (F
    . 2) 
    in ( 
    dom (SE 
    . 8)) by 
    A12,
    A7,
    A28,
    A35,
    A39,
    A40,
    NOMIN_8: 16;
    
      then
    
      
    
    A41: (F 
    . 1) 
    in ( 
    dom Q1) by 
    A35,
    A31,
    A33,
    A36;
    
      hence d
    in ( 
    dom (SE 
    . ( 
    len SE))) by 
    A34,
    A17,
    A30,
    A32,
    A7,
    A8,
    A16;
    
      
    
      
    
    A42: 
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,Lqc) 
    
      proof
    
        take Lqc;
    
        thus Lqc
    = Lqc; 
    
        thus
    {i, j, n, s, b, c, p, q, ps, qc}
    c= ( 
    dom Lqc) 
    
        proof
    
          
    
          
    
    A43: i 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A44: j 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A45: n 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A46: s 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A47: b 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A48: c 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A49: p 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A50: q 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          
    
          
    
    A51: ps 
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          qc
    in ( 
    dom Lqc) by 
    A28,
    NOMIN_7: 9;
    
          hence
    {i, j, n, s, b, c, p, q, ps, qc}
    c= ( 
    dom Lqc) by 
    A43,
    A44,
    A45,
    A46,
    A47,
    A48,
    A49,
    A50,
    A51,
    ENUMSET1:def 8;
    
        end;
    
        
    
        thus (Lqc
    . j) 
    = (d1 
    . j1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= 1 by
    A21;
    
        
    
        thus (Lqc
    . n) 
    = (d1 
    . n1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= n0 by
    A22;
    
        
    
        thus (Lqc
    . p) 
    = (d1 
    . p1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= p0 by
    A25;
    
        
    
        thus (Lqc
    . q) 
    = (d1 
    . q1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= q0 by
    A26;
    
        take
    0 ; 
    
        
    
        thus (Lqc
    . i) 
    = (d1 
    . i1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .=
    0 by 
    A20;
    
        
    
        thus (Lqc
    . s) 
    = (d1 
    . s1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= x0 by
    A23
    
        .= (
    Lucas (x0,y0,p0,q0, 
    0 )) by 
    Th5;
    
        
    
        thus (Lqc
    . b) 
    = (d1 
    . b1) by 
    A3,
    A4,
    A5,
    A28,
    NOMIN_7: 13
    
        .= y0 by
    A24
    
        .= (
    Lucas (x0,y0,p0,q0,( 
    0  
    + 1))) by 
    Th5;
    
      end;
    
      
    
      
    
    A52: (10 
    - 9) 
    = 1 & (10 
    - 1) 
    = 9; 
    
      
    
      
    
    A53: (8 
    + 1) 
    = 9 & 8 
    = (10 
    - 2); 
    
      
    
      
    
    A54: ( 
    local_overlapping (V,A,(F 
    . 9),((DS 
    . 10) 
    . (F 
    . 9)),qc)) 
    in ( 
    dom inv) by 
    A37;
    
      set dy = (
    local_overlapping (V,A,(F 
    . 8),((DS 
    . 9) 
    . (F 
    . 8)),ps)); 
    
      
    
      
    
    A55: ( 
    local_overlapping (V,A,dy,((DS 
    . 10) 
    . dy),qc)) 
    in ( 
    dom inv) by 
    A37;
    
      
    
      thus ((SE
    . ( 
    len SE)) 
    . d) 
    = (Q1 
    . (F 
    . 1)) by 
    A11,
    A12,
    A14,
    A7,
    A15,
    A17,
    A28,
    A34,
    A41,
    A52,
    A53,
    A54,
    NOMIN_8: 19
    
      .= ((SE
    . 1) 
    . (F 
    . 9)) by 
    A14,
    A7,
    A15,
    A28,
    A52,
    A54,
    NOMIN_8: 17
    
      .= (inv
    . Lqc) by 
    A13,
    A14,
    A7,
    A28,
    A52,
    A53,
    A54,
    A55,
    NOMIN_8: 18
    
      .=
    TRUE by 
    A38,
    A42,
    Def15;
    
    end;
    
    theorem :: 
    
    NOMIN_9:14
    
    
    
    
    
    Th14: for val be 10 
    -element  
    FinSequence holds V is non 
    empty & A 
    is_without_nonatomicND_wrt V & ( 
    Seg 10) 
    c= ( 
    dom loc) & (loc 
    | ( 
    Seg 10)) is 
    one-to-one & (loc,val) 
    are_different_wrt 10 implies 
    <*(
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)), ( 
    initial_assignments (A,loc,val,10)), ( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      let val be 10
    -element  
    FinSequence;
    
      set size = 10;
    
      set G = (
    initial_assignments_Seq (A,loc,val,size)); 
    
      
    
      
    
    A1: (G 
    . 1) 
    = ( 
    SC_assignment (( 
    denaming (V,A,(val 
    . 1))),(loc 
    /. 1))) by 
    NOMIN_7:def 8;
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set i1 = (val
    . 1), j1 = (val 
    . 2), n1 = (val 
    . 3), s1 = (val 
    . 4), b1 = (val 
    . 5), c1 = (val 
    . 6); 
    
      set p1 = (val
    . 7), q1 = (val 
    . 8), ps1 = (val 
    . 9), qc1 = (val 
    . 10); 
    
      set EN =
    {i1, j1, n1, s1, b1, c1, p1, q1, ps1, qc1};
    
      set D = (
    ND (V,A)); 
    
      set I = (
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set DS = (
    denamingSeq (V,A,val)); 
    
      set asi = (
    SC_assignment ((DS 
    . 1),i)); 
    
      set asj = (
    SC_assignment ((DS 
    . 2),j)); 
    
      set asn = (
    SC_assignment ((DS 
    . 3),n)); 
    
      set ass = (
    SC_assignment ((DS 
    . 4),s)); 
    
      set asb = (
    SC_assignment ((DS 
    . 5),b)); 
    
      set asc = (
    SC_assignment ((DS 
    . 6),c)); 
    
      set asp = (
    SC_assignment ((DS 
    . 7),p)); 
    
      set asq = (
    SC_assignment ((DS 
    . 8),q)); 
    
      set asps = (
    SC_assignment ((DS 
    . 9),ps)); 
    
      set asqc = (
    SC_assignment ((DS 
    . 10),qc)); 
    
      set SE = (
    SC_Psuperpos_Seq (loc,val,inv)); 
    
      assume that
    
      
    
    A2: V is non 
    empty and 
    
      
    
    A3: A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A4: ( 
    Seg 10) 
    c= ( 
    dom loc) and 
    
      
    
    A5: (loc 
    | ( 
    Seg 10)) is 
    one-to-one and 
    
      
    
    A6: (loc,val) 
    are_different_wrt 10; 
    
      
    
      
    
    A7: ( 
    len val) 
    = 10 by 
    CARD_1:def 7;
    
      
    
      
    
    A8: ( 
    len SE) 
    = 10 by 
    NOMIN_8:def 9,
    A7;
    
      
    
      
    
    A9: ( 
    len DS) 
    = 10 by 
    NOMIN_8:def 8,
    A7;
    
      
    
      
    
    A10: 2 
    = (1 
    + 1) & 3 
    = (2 
    + 1) & 4 
    = (3 
    + 1) & 5 
    = (4 
    + 1) & 6 
    = (5 
    + 1) & 7 
    = (6 
    + 1) & 8 
    = (7 
    + 1) & 9 
    = (8 
    + 1) & 10 
    = (9 
    + 1); 
    
      
    
      
    
    A11: (SE 
    . 1) 
    = ( 
    SC_Psuperpos (inv,( 
    denaming (V,A,(val 
    . ( 
    len val)))),(loc 
    /. ( 
    len val)))) by 
    NOMIN_8:def 9;
    
      
    
      
    
    A12: (SE 
    . 2) 
    = ( 
    SC_Psuperpos ((SE 
    . 1),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 1)))),(loc 
    /. (( 
    len val) 
    - 1)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A13: (SE 
    . 3) 
    = ( 
    SC_Psuperpos ((SE 
    . 2),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 2)))),(loc 
    /. (( 
    len val) 
    - 2)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A14: (SE 
    . 4) 
    = ( 
    SC_Psuperpos ((SE 
    . 3),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 3)))),(loc 
    /. (( 
    len val) 
    - 3)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A15: (SE 
    . 5) 
    = ( 
    SC_Psuperpos ((SE 
    . 4),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 4)))),(loc 
    /. (( 
    len val) 
    - 4)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A16: (SE 
    . 6) 
    = ( 
    SC_Psuperpos ((SE 
    . 5),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 5)))),(loc 
    /. (( 
    len val) 
    - 5)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A17: (SE 
    . 7) 
    = ( 
    SC_Psuperpos ((SE 
    . 6),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 6)))),(loc 
    /. (( 
    len val) 
    - 6)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A18: (SE 
    . 8) 
    = ( 
    SC_Psuperpos ((SE 
    . 7),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 7)))),(loc 
    /. (( 
    len val) 
    - 7)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A19: (SE 
    . 9) 
    = ( 
    SC_Psuperpos ((SE 
    . 8),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 8)))),(loc 
    /. (( 
    len val) 
    - 8)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A20: (SE 
    . 10) 
    = ( 
    SC_Psuperpos ((SE 
    . 9),( 
    denaming (V,A,(val 
    . (( 
    len val) 
    - 9)))),(loc 
    /. (( 
    len val) 
    - 9)))) by 
    A10,
    A8,
    NOMIN_8:def 9;
    
      
    
      
    
    A21: (DS 
    . 1) 
    = ( 
    denaming (V,A,(val 
    . 1))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A22: (DS 
    . 2) 
    = ( 
    denaming (V,A,(val 
    . 2))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A23: (DS 
    . 3) 
    = ( 
    denaming (V,A,(val 
    . 3))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A24: (DS 
    . 4) 
    = ( 
    denaming (V,A,(val 
    . 4))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A25: (DS 
    . 5) 
    = ( 
    denaming (V,A,(val 
    . 5))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A26: (DS 
    . 6) 
    = ( 
    denaming (V,A,(val 
    . 6))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A27: (DS 
    . 7) 
    = ( 
    denaming (V,A,(val 
    . 7))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A28: (DS 
    . 8) 
    = ( 
    denaming (V,A,(val 
    . 8))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A29: (DS 
    . 9) 
    = ( 
    denaming (V,A,(val 
    . 9))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A30: (DS 
    . 10) 
    = ( 
    denaming (V,A,(val 
    . 10))) by 
    NOMIN_8:def 8,
    A9;
    
      
    
      
    
    A31: 
    <*(SE
    . 1), asqc, inv*> is 
    SFHT of D by 
    A7,
    A11,
    A30,
    NOMIN_3: 29;
    
      
    
      
    
    A32: 
    <*(SE
    . 2), asps, (SE 
    . 1)*> is 
    SFHT of D by 
    A7,
    A12,
    A29,
    NOMIN_3: 29;
    
      
    
      
    
    A33: 
    <*(SE
    . 3), asq, (SE 
    . 2)*> is 
    SFHT of D by 
    A7,
    A13,
    A28,
    NOMIN_3: 29;
    
      
    
      
    
    A34: 
    <*(SE
    . 4), asp, (SE 
    . 3)*> is 
    SFHT of D by 
    A7,
    A14,
    A27,
    NOMIN_3: 29;
    
      
    
      
    
    A35: 
    <*(SE
    . 5), asc, (SE 
    . 4)*> is 
    SFHT of D by 
    A7,
    A15,
    A26,
    NOMIN_3: 29;
    
      
    
      
    
    A36: 
    <*(SE
    . 6), asb, (SE 
    . 5)*> is 
    SFHT of D by 
    A7,
    A16,
    A25,
    NOMIN_3: 29;
    
      
    
      
    
    A37: 
    <*(SE
    . 7), ass, (SE 
    . 6)*> is 
    SFHT of D by 
    A7,
    A17,
    A24,
    NOMIN_3: 29;
    
      
    
      
    
    A38: 
    <*(SE
    . 8), asn, (SE 
    . 7)*> is 
    SFHT of D by 
    A7,
    A18,
    A23,
    NOMIN_3: 29;
    
      
    
      
    
    A39: 
    <*(SE
    . 9), asj, (SE 
    . 8)*> is 
    SFHT of D by 
    A7,
    A19,
    A22,
    NOMIN_3: 29;
    
      
    
      
    
    A40: 
    <*(SE
    . 10), asi, (SE 
    . 9)*> is 
    SFHT of D by 
    A7,
    A20,
    A21,
    NOMIN_3: 29;
    
      
    
      
    
    A41: (G 
    . 2) 
    = ( 
    PP_composition (asi,asj)) by 
    A10,
    A21,
    A22,
    A1,
    NOMIN_7:def 8;
    
      
    
      
    
    A42: (G 
    . 3) 
    = ( 
    PP_composition ((G 
    . 2),asn)) by 
    A10,
    A23,
    NOMIN_7:def 8;
    
      
    
      
    
    A43: (G 
    . 4) 
    = ( 
    PP_composition ((G 
    . 3),ass)) by 
    A10,
    A24,
    NOMIN_7:def 8;
    
      
    
      
    
    A44: (G 
    . 5) 
    = ( 
    PP_composition ((G 
    . 4),asb)) by 
    A10,
    A25,
    NOMIN_7:def 8;
    
      
    
      
    
    A45: (G 
    . 6) 
    = ( 
    PP_composition ((G 
    . 5),asc)) by 
    A10,
    A26,
    NOMIN_7:def 8;
    
      
    
      
    
    A46: (G 
    . 7) 
    = ( 
    PP_composition ((G 
    . 6),asp)) by 
    A10,
    A27,
    NOMIN_7:def 8;
    
      
    
      
    
    A47: (G 
    . 8) 
    = ( 
    PP_composition ((G 
    . 7),asq)) by 
    A10,
    A28,
    NOMIN_7:def 8;
    
      
    
      
    
    A48: (G 
    . 9) 
    = ( 
    PP_composition ((G 
    . 8),asps)) by 
    A10,
    A29,
    NOMIN_7:def 8;
    
      
    
      
    
    A49: ( 
    initial_assignments (A,loc,val,10)) 
    = ( 
    PP_composition (asi,asj,asn,ass,asb,asc,asp,asq,asps,asqc)) by 
    A10,
    A30,
    A41,
    A42,
    A43,
    A44,
    A45,
    A46,
    A47,
    A48,
    NOMIN_7:def 8;
    
      I
    ||= (SE 
    . 10) by 
    A2,
    A3,
    A4,
    A5,
    A6,
    A8,
    Th13;
    
      then
    
      
    
    A50: 
    <*I, asi, (SE
    . 9)*> is 
    SFHT of D by 
    A40,
    NOMIN_3: 15;
    
      
    
      
    
    A51: 
    <*(
    PP_inversion (SE 
    . 9)), asj, (SE 
    . 8)*> is 
    SFHT of D by 
    A7,
    A19,
    A22,
    NOMIN_4: 16;
    
      
    
      
    
    A52: 
    <*(
    PP_inversion (SE 
    . 8)), asn, (SE 
    . 7)*> is 
    SFHT of D by 
    A7,
    A18,
    A23,
    NOMIN_4: 16;
    
      
    
      
    
    A53: 
    <*(
    PP_inversion (SE 
    . 7)), ass, (SE 
    . 6)*> is 
    SFHT of D by 
    A7,
    A17,
    A24,
    NOMIN_4: 16;
    
      
    
      
    
    A54: 
    <*(
    PP_inversion (SE 
    . 6)), asb, (SE 
    . 5)*> is 
    SFHT of D by 
    A7,
    A16,
    A25,
    NOMIN_4: 16;
    
      
    
      
    
    A55: 
    <*(
    PP_inversion (SE 
    . 5)), asc, (SE 
    . 4)*> is 
    SFHT of D by 
    A7,
    A15,
    A26,
    NOMIN_4: 16;
    
      
    
      
    
    A56: 
    <*(
    PP_inversion (SE 
    . 4)), asp, (SE 
    . 3)*> is 
    SFHT of D by 
    A7,
    A14,
    A27,
    NOMIN_4: 16;
    
      
    
      
    
    A57: 
    <*(
    PP_inversion (SE 
    . 3)), asq, (SE 
    . 2)*> is 
    SFHT of D by 
    A7,
    A13,
    A28,
    NOMIN_4: 16;
    
      
    
      
    
    A58: 
    <*(
    PP_inversion (SE 
    . 2)), asps, (SE 
    . 1)*> is 
    SFHT of D by 
    A7,
    A12,
    A29,
    NOMIN_4: 16;
    
      
    <*(
    PP_inversion (SE 
    . 1)), asqc, inv*> is 
    SFHT of D by 
    A7,
    A11,
    A30,
    NOMIN_4: 16;
    
      hence thesis by
    A49,
    A32,
    A31,
    A33,
    A34,
    A35,
    A36,
    A37,
    A38,
    A39,
    A50,
    A51,
    A52,
    A53,
    A54,
    A55,
    A56,
    A57,
    A58,
    NOMIN_8: 4;
    
    end;
    
    theorem :: 
    
    NOMIN_9:15
    
    
    
    
    
    Th15: V is non 
    empty & A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & d1 
    in ( 
    dom ( 
    Lucas_loop_body (A,loc))) & loc 
    is_valid_wrt d1 & ( 
    Seg 10) 
    c= ( 
    dom loc) & (for T holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 2) 
    is_a_value_on T & (loc 
    /. 4) 
    is_a_value_on T & (loc 
    /. 6) 
    is_a_value_on T & (loc 
    /. 7) 
    is_a_value_on T & (loc 
    /. 8) 
    is_a_value_on T & (loc 
    /. 9) 
    is_a_value_on T & (loc 
    /. 10) 
    is_a_value_on T) implies 
    prg_doms_of (loc,d1, 
    <*(
    denaming (V,A,(loc 
    /. 4))), ( 
    denaming (V,A,(loc 
    /. 5))), ( 
    multiplication (A,(loc 
    /. 7),(loc 
    /. 4))), ( 
    multiplication (A,(loc 
    /. 8),(loc 
    /. 6))), ( 
    subtraction (A,(loc 
    /. 9),(loc 
    /. 10))), ( 
    addition (A,(loc 
    /. 1),(loc 
    /. 2)))*>, 
    <*6, 4, 9, 10, 5, 1*>)
    
    proof
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set B = (
    Lucas_loop_body (A,loc)); 
    
      assume that
    
      
    
    A1: V is non 
    empty and 
    
      
    
    A2: A is 
    complex-containing and 
    
      
    
    A3: A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A4: d1 
    in ( 
    dom B) and 
    
      
    
    A5: loc 
    is_valid_wrt d1 and 
    
      
    
    A6: ( 
    Seg 10) 
    c= ( 
    dom loc) and 
    
      
    
    A7: for T holds i 
    is_a_value_on T & j 
    is_a_value_on T & s 
    is_a_value_on T & c 
    is_a_value_on T & p 
    is_a_value_on T & q 
    is_a_value_on T & ps 
    is_a_value_on T & qc 
    is_a_value_on T; 
    
      set D = (
    ND (V,A)); 
    
      set EN =
    {i, j, n, s, b, c, p, q, ps, qc};
    
      set Di = (
    denaming (V,A,i)); 
    
      set Dj = (
    denaming (V,A,j)); 
    
      set Dn = (
    denaming (V,A,n)); 
    
      set Ds = (
    denaming (V,A,s)); 
    
      set Db = (
    denaming (V,A,b)); 
    
      set Dc = (
    denaming (V,A,c)); 
    
      set Dp = (
    denaming (V,A,p)); 
    
      set Dq = (
    denaming (V,A,q)); 
    
      set Dps = (
    denaming (V,A,ps)); 
    
      set Dqc = (
    denaming (V,A,qc)); 
    
      set Aij = (
    addition (A,i,j)); 
    
      set Mps = (
    multiplication (A,p,s)); 
    
      set Mqc = (
    multiplication (A,q,c)); 
    
      set Scs = (
    subtraction (A,ps,qc)); 
    
      set AS1 = (
    SC_assignment (Ds,c)); 
    
      set AS2 = (
    SC_assignment (Db,s)); 
    
      set AS3 = (
    SC_assignment (Mps,ps)); 
    
      set AS4 = (
    SC_assignment (Mqc,qc)); 
    
      set AS5 = (
    SC_assignment (Scs,b)); 
    
      set AS6 = (
    SC_assignment (Aij,i)); 
    
      set prg =
    <*Ds, Db, Mps, Mqc, Scs, Aij*>;
    
      set pos =
    <*6, 4, 9, 10, 5, 1*>;
    
      set PS = (
    PrgLocalOverlapSeq (A,loc,d1,prg,pos)); 
    
      
    
      
    
    A8: EN 
    c= ( 
    dom d1) by 
    A5,
    A6,
    Th12;
    
      
    
      
    
    A9: i 
    in EN by 
    ENUMSET1:def 8;
    
      
    
      
    
    A10: j 
    in EN by 
    ENUMSET1:def 8;
    
      
    
      
    
    A11: b 
    in EN by 
    ENUMSET1:def 8;
    
      
    
      
    
    A12: p 
    in EN by 
    ENUMSET1:def 8;
    
      
    
      
    
    A13: q 
    in EN by 
    ENUMSET1:def 8;
    
      
    
      
    
    A14: ( 
    len prg) 
    = 6 by 
    AOFA_A00: 20;
    
      
    
      
    
    A15: ( 
    len PS) 
    = ( 
    len prg) by 
    NOMIN_8:def 14;
    
      
    
      
    
    A16: (prg 
    . 1) 
    = Ds & (pos 
    . 1) 
    = 6; 
    
      
    
      
    
    A17: (prg 
    . 2) 
    = Db & (pos 
    . 2) 
    = 4; 
    
      
    
      
    
    A18: (prg 
    . 3) 
    = Mps & (pos 
    . 3) 
    = 9; 
    
      
    
      
    
    A19: (prg 
    . 4) 
    = Mqc & (pos 
    . 4) 
    = 10; 
    
      
    
      
    
    A20: (prg 
    . 5) 
    = Scs & (pos 
    . 5) 
    = 5; 
    
      
    
      
    
    A21: ( 
    dom AS1) 
    = ( 
    dom Ds) by 
    NOMIN_2:def 7;
    
      
    
      
    
    A22: ( 
    dom AS2) 
    = ( 
    dom Db) by 
    NOMIN_2:def 7;
    
      (
    PP_composition (( 
    PP_composition (( 
    PP_composition (( 
    PP_composition (AS1,AS2)),AS3)),AS4)),AS5)) 
    = ( 
    PP_composition (( 
    PP_composition (( 
    PP_composition ((AS2 
    * AS1),AS3)),AS4)),AS5)) by 
    PARTPR_2:def 1
    
      .= (
    PP_composition (( 
    PP_composition ((AS3 
    * (AS2 
    * AS1)),AS4)),AS5)) by 
    PARTPR_2:def 1
    
      .= (
    PP_composition ((AS4 
    * (AS3 
    * (AS2 
    * AS1))),AS5)) by 
    PARTPR_2:def 1
    
      .= (AS5
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    PARTPR_2:def 1;
    
      then
    
      
    
    A23: B 
    = (AS6 
    * (AS5 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1))))) by 
    PARTPR_2:def 1;
    
      
    
      
    
    A24: ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1) 
    = (((AS5 
    * AS4) 
    * AS3) 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36
    
      .= ((AS5
    * AS4) 
    * (AS3 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
      .= (AS5
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    RELAT_1: 36;
    
      
    
      
    
    A25: (AS5 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) 
    = (AS5 
    * ((AS4 
    * AS3) 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
      .= (AS5
    * (((AS4 
    * AS3) 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
      
    
      
    
    A26: (((AS4 
    * AS3) 
    * AS2) 
    * AS1) 
    = ((AS4 
    * AS3) 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36
    
      .= (AS4
    * (AS3 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36;
    
      
    
      
    
    A27: (AS4 
    * (AS3 
    * (AS2 
    * AS1))) 
    = (AS4 
    * ((AS3 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
      
    
      
    
    A28: ((AS3 
    * AS2) 
    * AS1) 
    = (AS3 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36;
    
      B
    = (AS6 
    * ((AS5 
    * AS4) 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    A23,
    RELAT_1: 36
    
      .= (AS6
    * (((AS5 
    * AS4) 
    * AS3) 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
      .= (AS6
    * ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
      then
    
      
    
    A29: d1 
    in ( 
    dom ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1)) by 
    A4,
    FUNCT_1: 11;
    
      then d1
    in ( 
    dom (((AS4 
    * AS3) 
    * AS2) 
    * AS1)) by 
    A24,
    A25,
    FUNCT_1: 11;
    
      then d1
    in ( 
    dom ((AS3 
    * AS2) 
    * AS1)) by 
    A26,
    A27,
    FUNCT_1: 11;
    
      then
    
      
    
    A30: d1 
    in ( 
    dom (AS2 
    * AS1)) by 
    A28,
    FUNCT_1: 11;
    
      
    
      
    
    A31: ( 
    dom Di) 
    = { d where d be 
    NonatomicND of V, A : i 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A32: ( 
    dom Dj) 
    = { d where d be 
    NonatomicND of V, A : j 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A33: ( 
    dom Ds) 
    = { d where d be 
    NonatomicND of V, A : s 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A34: ( 
    dom Db) 
    = { d where d be 
    NonatomicND of V, A : b 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A35: ( 
    dom Dc) 
    = { d where d be 
    NonatomicND of V, A : c 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A36: ( 
    dom Dp) 
    = { d where d be 
    NonatomicND of V, A : p 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A37: ( 
    dom Dq) 
    = { d where d be 
    NonatomicND of V, A : q 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A38: ( 
    dom Dps) 
    = { d where d be 
    NonatomicND of V, A : ps 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A39: ( 
    dom Dqc) 
    = { d where d be 
    NonatomicND of V, A : qc 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A40: d1 
    in ( 
    dom Ds) by 
    A21,
    A29,
    FUNCT_1: 11;
    
      then
    
      reconsider Ad = (Ds
    . d1) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
      reconsider L1 = (
    local_overlapping (V,A,d1,Ad,c)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
      (AS1
    . d1) 
    = L1 by 
    A21,
    A40,
    NOMIN_2:def 7;
    
      then L1
    in ( 
    dom AS2) by 
    A30,
    FUNCT_1: 11;
    
      then
    
      reconsider DbL1 = (Db
    . L1) as 
    TypeSCNominativeData of V, A by 
    A22,
    PARTFUN1: 4,
    NOMIN_1: 39;
    
      reconsider L2 = (
    local_overlapping (V,A,L1,DbL1,s)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
      
    
      
    
    A41: ( 
    dom L1) 
    = ( 
    {c}
    \/ ( 
    dom d1)) by 
    A3,
    A1,
    NOMIN_4: 4;
    
      
    
      
    
    A42: ( 
    dom L2) 
    = ( 
    {s}
    \/ ( 
    dom L1)) by 
    A3,
    A1,
    NOMIN_4: 4;
    
      s
    in  
    {s} by
    TARSKI:def 1;
    
      then s
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A43: L2 
    in ( 
    dom Ds) by 
    A33;
    
      p
    in ( 
    dom L1) by 
    A8,
    A12,
    A41,
    XBOOLE_0:def 3;
    
      then p
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then L2
    in ( 
    dom Dp) by 
    A36;
    
      then L2
    in (( 
    dom Ds) 
    /\ ( 
    dom Dp)) by 
    A43,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A44: L2 
    in ( 
    dom  
    <:Dp, Ds:>) by
    FUNCT_3:def 7;
    
      then
    
      
    
    A45: ( 
    <:Dp, Ds:>
    . L2) 
    =  
    [(Dp
    . L2), (Ds 
    . L2)] by 
    FUNCT_3:def 7;
    
      
    
      
    
    A46: ( 
    dom ( 
    multiplication A)) 
    =  
    [:A, A:] by
    A2,
    FUNCT_2:def 1;
    
      p
    is_a_value_on L2 & s 
    is_a_value_on L2 by 
    A7;
    
      then
    [(Dp
    . L2), (Ds 
    . L2)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
      then
    
      
    
    A47: L2 
    in ( 
    dom Mps) by 
    A44,
    A46,
    A45,
    FUNCT_1: 11;
    
      then
    
      reconsider MpsL2 = (Mps
    . L2) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
      reconsider L3 = (
    local_overlapping (V,A,L2,MpsL2,ps)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
      
    
      
    
    A48: ( 
    dom L3) 
    = ( 
    {ps}
    \/ ( 
    dom L2)) by 
    A1,
    A3,
    NOMIN_4: 4;
    
      q
    in ( 
    dom L1) by 
    A8,
    A13,
    A41,
    XBOOLE_0:def 3;
    
      then q
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A49: q 
    in ( 
    dom L3) by 
    A48,
    XBOOLE_0:def 3;
    
      c
    in  
    {c} by
    TARSKI:def 1;
    
      then c
    in ( 
    dom L1) by 
    A41,
    XBOOLE_0:def 3;
    
      then c
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A50: c 
    in ( 
    dom L3) by 
    A48,
    XBOOLE_0:def 3;
    
      
    
      
    
    A51: L3 
    in ( 
    dom Dq) by 
    A49,
    A37;
    
      L3
    in ( 
    dom Dc) by 
    A50,
    A35;
    
      then L3
    in (( 
    dom Dq) 
    /\ ( 
    dom Dc)) by 
    A51,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A52: L3 
    in ( 
    dom  
    <:Dq, Dc:>) by
    FUNCT_3:def 7;
    
      then
    
      
    
    A53: ( 
    <:Dq, Dc:>
    . L3) 
    =  
    [(Dq
    . L3), (Dc 
    . L3)] by 
    FUNCT_3:def 7;
    
      q
    is_a_value_on L3 & c 
    is_a_value_on L3 by 
    A7;
    
      then
    [(Dq
    . L3), (Dc 
    . L3)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
      then
    
      
    
    A54: L3 
    in ( 
    dom Mqc) by 
    A52,
    A46,
    A53,
    FUNCT_1: 11;
    
      then
    
      reconsider MqcL3 = (Mqc
    . L3) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
      reconsider L4 = (
    local_overlapping (V,A,L3,MqcL3,qc)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
      
    
      
    
    A55: ( 
    dom L4) 
    = ( 
    {qc}
    \/ ( 
    dom L3)) by 
    A1,
    A3,
    NOMIN_4: 4;
    
      qc
    in  
    {qc} by
    TARSKI:def 1;
    
      then
    
      
    
    A56: qc 
    in ( 
    dom L4) by 
    A55,
    XBOOLE_0:def 3;
    
      ps
    in  
    {ps} by
    TARSKI:def 1;
    
      then ps
    in ( 
    dom L3) by 
    A48,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A57: ps 
    in ( 
    dom L4) by 
    A55,
    XBOOLE_0:def 3;
    
      
    
      
    
    A58: b 
    in ( 
    dom L1) by 
    A8,
    A11,
    A41,
    XBOOLE_0:def 3;
    
      
    
      
    
    A59: L4 
    in ( 
    dom Dps) by 
    A57,
    A38;
    
      L4
    in ( 
    dom Dqc) by 
    A56,
    A39;
    
      then L4
    in (( 
    dom Dps) 
    /\ ( 
    dom Dqc)) by 
    A59,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A60: L4 
    in ( 
    dom  
    <:Dps, Dqc:>) by
    FUNCT_3:def 7;
    
      then
    
      
    
    A61: ( 
    <:Dps, Dqc:>
    . L4) 
    =  
    [(Dps
    . L4), (Dqc 
    . L4)] by 
    FUNCT_3:def 7;
    
      
    
      
    
    A62: ( 
    dom ( 
    subtraction A)) 
    =  
    [:A, A:] by
    A2,
    FUNCT_2:def 1;
    
      ps
    is_a_value_on L4 & qc 
    is_a_value_on L4 by 
    A7;
    
      then
    [(Dps
    . L4), (Dqc 
    . L4)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
      then
    
      
    
    A63: L4 
    in ( 
    dom Scs) by 
    A60,
    A62,
    A61,
    FUNCT_1: 11;
    
      then
    
      reconsider ScsL4 = (Scs
    . L4) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
      reconsider L5 = (
    local_overlapping (V,A,L4,ScsL4,b)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
      
    
      
    
    A64: ( 
    dom L5) 
    = ( 
    {b}
    \/ ( 
    dom L4)) by 
    A1,
    A3,
    NOMIN_4: 4;
    
      i
    in ( 
    dom L1) by 
    A8,
    A9,
    A41,
    XBOOLE_0:def 3;
    
      then i
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then i
    in ( 
    dom L3) by 
    A48,
    XBOOLE_0:def 3;
    
      then i
    in ( 
    dom L4) by 
    A55,
    XBOOLE_0:def 3;
    
      then i
    in ( 
    dom L5) by 
    A64,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A65: L5 
    in ( 
    dom Di) by 
    A31;
    
      j
    in ( 
    dom L1) by 
    A8,
    A10,
    A41,
    XBOOLE_0:def 3;
    
      then j
    in ( 
    dom L2) by 
    A42,
    XBOOLE_0:def 3;
    
      then j
    in ( 
    dom L3) by 
    A48,
    XBOOLE_0:def 3;
    
      then j
    in ( 
    dom L4) by 
    A55,
    XBOOLE_0:def 3;
    
      then j
    in ( 
    dom L5) by 
    A64,
    XBOOLE_0:def 3;
    
      then
    
      
    
    A66: L5 
    in ( 
    dom Dj) by 
    A32;
    
      L5
    in (( 
    dom Di) 
    /\ ( 
    dom Dj)) by 
    A65,
    A66,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A67: L5 
    in ( 
    dom  
    <:Di, Dj:>) by
    FUNCT_3:def 7;
    
      then
    
      
    
    A68: ( 
    <:Di, Dj:>
    . L5) 
    =  
    [(Di
    . L5), (Dj 
    . L5)] by 
    FUNCT_3:def 7;
    
      
    
      
    
    A69: ( 
    dom ( 
    addition A)) 
    =  
    [:A, A:] by
    A2,
    FUNCT_2:def 1;
    
      i
    is_a_value_on L5 & j 
    is_a_value_on L5 by 
    A7;
    
      then
    [(Di
    . L5), (Dj 
    . L5)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
      then
    
      
    
    A70: L5 
    in ( 
    dom Aij) by 
    A69,
    A67,
    A68,
    FUNCT_1: 11;
    
      
    
      
    
    A71: 2 
    = (1 
    + 1) & 3 
    = (2 
    + 1) & 4 
    = (3 
    + 1) & 5 
    = (4 
    + 1) & 6 
    = (5 
    + 1); 
    
      
    
      
    
    A72: (PS 
    . 1) 
    = L1 by 
    A14,
    A16,
    NOMIN_8:def 14;
    
      
    
      
    
    A73: (PS 
    . 2) 
    = L2 by 
    A71,
    A14,
    A15,
    A17,
    A72,
    NOMIN_8:def 14;
    
      
    
      
    
    A74: (PS 
    . 3) 
    = L3 by 
    A71,
    A14,
    A15,
    A18,
    A73,
    NOMIN_8:def 14;
    
      
    
      
    
    A75: (PS 
    . 4) 
    = L4 by 
    A71,
    A14,
    A15,
    A19,
    A74,
    NOMIN_8:def 14;
    
      let y be
    Nat;
    
      assume
    
      
    
    A76: 1 
    <= y; 
    
      assume y
    < ( 
    len prg); 
    
      then ((y
    + 1) 
    - 1) 
    <= (6 
    - 1) by 
    A14,
    NAT_1: 13;
    
      then y
    = (1 
    +  
    0 ) or ... or y 
    = (1 
    + 4) by 
    A76,
    NAT_1: 62;
    
      per cases ;
    
        suppose y
    = 1; 
    
        hence thesis by
    A72,
    A34,
    A58;
    
      end;
    
        suppose y
    = 2; 
    
        hence thesis by
    A47,
    A71,
    A14,
    A15,
    A17,
    A72,
    NOMIN_8:def 14;
    
      end;
    
        suppose y
    = 3; 
    
        hence thesis by
    A54,
    A71,
    A14,
    A15,
    A18,
    A73,
    NOMIN_8:def 14;
    
      end;
    
        suppose y
    = 4; 
    
        hence thesis by
    A63,
    A71,
    A14,
    A15,
    A19,
    A74,
    NOMIN_8:def 14;
    
      end;
    
        suppose y
    = 5; 
    
        hence thesis by
    A70,
    A71,
    A14,
    A15,
    A20,
    A75,
    NOMIN_8:def 14;
    
      end;
    
    end;
    
    theorem :: 
    
    NOMIN_9:16
    
    
    
    
    
    Th16: for V be non 
    empty  
    set holds for loc be V 
    -valued10
    -element  
    FinSequence holds A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 2) 
    is_a_value_on T & (loc 
    /. 4) 
    is_a_value_on T & (loc 
    /. 6) 
    is_a_value_on T & (loc 
    /. 7) 
    is_a_value_on T & (loc 
    /. 8) 
    is_a_value_on T & (loc 
    /. 9) 
    is_a_value_on T & (loc 
    /. 10) 
    is_a_value_on T) & loc is 
    one-to-one implies 
    <*(
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)), ( 
    Lucas_loop_body (A,loc)), ( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      let V be non
    empty  
    set;
    
      let loc be V
    -valued10
    -element  
    FinSequence;
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      assume that
    
      
    
    A1: A is 
    complex-containing and 
    
      
    
    A2: A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A3: for T be 
    TypeSCNominativeData of V, A holds i 
    is_a_value_on T & j 
    is_a_value_on T & s 
    is_a_value_on T & c 
    is_a_value_on T & p 
    is_a_value_on T & q 
    is_a_value_on T & ps 
    is_a_value_on T & qc 
    is_a_value_on T; 
    
      assume
    
      
    
    A4: loc is 
    one-to-one;
    
      
    
      
    
    A5: ( 
    Seg 10) 
    = ( 
    dom loc) by 
    FINSEQ_1: 89;
    
      
    
      
    
    A6: (loc 
    | ( 
    Seg 10)) 
    = loc; 
    
      set D = (
    ND (V,A)); 
    
      set EN =
    {i, j, n, s, b, c, p, q, ps, qc};
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set B = (
    Lucas_loop_body (A,loc)); 
    
      set Di = (
    denaming (V,A,i)); 
    
      set Dj = (
    denaming (V,A,j)); 
    
      set Dn = (
    denaming (V,A,n)); 
    
      set Ds = (
    denaming (V,A,s)); 
    
      set Db = (
    denaming (V,A,b)); 
    
      set Dc = (
    denaming (V,A,c)); 
    
      set Dp = (
    denaming (V,A,p)); 
    
      set Dq = (
    denaming (V,A,q)); 
    
      set Dps = (
    denaming (V,A,ps)); 
    
      set Dqc = (
    denaming (V,A,qc)); 
    
      set Aij = (
    addition (A,i,j)); 
    
      set Mps = (
    multiplication (A,p,s)); 
    
      set Mqc = (
    multiplication (A,q,c)); 
    
      set Scs = (
    subtraction (A,ps,qc)); 
    
      set AS1 = (
    SC_assignment (Ds,c)); 
    
      set AS2 = (
    SC_assignment (Db,s)); 
    
      set AS3 = (
    SC_assignment (Mps,ps)); 
    
      set AS4 = (
    SC_assignment (Mqc,qc)); 
    
      set AS5 = (
    SC_assignment (Scs,b)); 
    
      set AS6 = (
    SC_assignment (Aij,i)); 
    
      now
    
        let d be
    TypeSCNominativeData of V, A such that 
    
        
    
    A7: d 
    in ( 
    dom inv) and 
    
        
    
    A8: (inv 
    . d) 
    =  
    TRUE and 
    
        
    
    A9: d 
    in ( 
    dom B) and 
    
        
    
    A10: (B 
    . d) 
    in ( 
    dom inv); 
    
        
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,d) by 
    A7,
    A8,
    Def15;
    
        then
    
        consider d1 be
    NonatomicND of V, A such that 
    
        
    
    A11: d 
    = d1 and 
    
        
    
    A12: EN 
    c= ( 
    dom d1) and 
    
        
    
    A13: (d1 
    . j) 
    = 1 and 
    
        
    
    A14: (d1 
    . n) 
    = n0 and 
    
        
    
    A15: (d1 
    . p) 
    = p0 and 
    
        
    
    A16: (d1 
    . q) 
    = q0 and 
    
        
    
    A17: ex I be 
    Nat st I 
    = (d1 
    . i) & (d1 
    . s) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) & (d1 
    . b) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))); 
    
        
    
        
    
    A18: i 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A19: j 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A20: n 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A21: s 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A22: b 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A23: p 
    in EN by 
    ENUMSET1:def 8;
    
        
    
        
    
    A24: q 
    in EN by 
    ENUMSET1:def 8;
    
        consider I be
    Nat such that 
    
        
    
    A25: I 
    = (d1 
    . i) and 
    
        
    
    A26: (d1 
    . s) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) and 
    
        
    
    A27: (d1 
    . b) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))) by 
    A17;
    
        set prg =
    <*Ds, Db, Mps, Mqc, Scs, Aij*>;
    
        set pos =
    <*6, 4, 9, 10, 5, 1*>;
    
        reconsider prg as non
    empty(
    FPrg ( 
    ND (V,A))) 
    -valued  
    FinSequence;
    
        set PS = (
    PrgLocalOverlapSeq (A,loc,d1,prg,pos)); 
    
        
    
        
    
    A28: ( 
    len prg) 
    = 6 by 
    AOFA_A00: 20;
    
        
    
        
    
    A29: ( 
    len PS) 
    = ( 
    len prg) by 
    NOMIN_8:def 14;
    
        
    
        
    
    A30: (prg 
    . 1) 
    = Ds & (pos 
    . 1) 
    = 6; 
    
        
    
        
    
    A31: (prg 
    . 2) 
    = Db & (pos 
    . 2) 
    = 4; 
    
        
    
        
    
    A32: (prg 
    . 3) 
    = Mps & (pos 
    . 3) 
    = 9; 
    
        
    
        
    
    A33: (prg 
    . 4) 
    = Mqc & (pos 
    . 4) 
    = 10; 
    
        
    
        
    
    A34: (prg 
    . 5) 
    = Scs & (pos 
    . 5) 
    = 5; 
    
        
    
        
    
    A35: (prg 
    . 6) 
    = Aij & (pos 
    . 6) 
    = 1; 
    
        (
    rng loc) 
    c= EN 
    
        proof
    
          let y be
    object;
    
          assume y
    in ( 
    rng loc); 
    
          then
    
          consider w be
    object such that 
    
          
    
    A36: w 
    in ( 
    dom loc) and 
    
          
    
    A37: (loc 
    . w) 
    = y by 
    FUNCT_1:def 3;
    
          
    
          
    
    A38: w 
    = 1 or ... or w 
    = 10 by 
    A5,
    A36,
    FINSEQ_1: 91;
    
          1
    in ( 
    Seg 10) & ... & 10 
    in ( 
    Seg 10); 
    
          then (loc
    . 1) 
    = (loc 
    /. 1) & ... & (loc 
    . 10) 
    = (loc 
    /. 10) by 
    A5,
    PARTFUN1:def 6;
    
          hence thesis by
    A37,
    A38,
    ENUMSET1:def 8;
    
        end;
    
        then (
    rng loc) 
    c= ( 
    dom d1) by 
    A12;
    
        then
    
        
    
    A39: loc 
    is_valid_wrt d1; 
    
        
    
        
    
    A40: ( 
    dom AS1) 
    = ( 
    dom Ds) by 
    NOMIN_2:def 7;
    
        
    
        
    
    A41: ( 
    dom AS2) 
    = ( 
    dom Db) by 
    NOMIN_2:def 7;
    
        (
    PP_composition (( 
    PP_composition (( 
    PP_composition (( 
    PP_composition (AS1,AS2)),AS3)),AS4)),AS5)) 
    = ( 
    PP_composition (( 
    PP_composition (( 
    PP_composition ((AS2 
    * AS1),AS3)),AS4)),AS5)) by 
    PARTPR_2:def 1
    
        .= (
    PP_composition (( 
    PP_composition ((AS3 
    * (AS2 
    * AS1)),AS4)),AS5)) by 
    PARTPR_2:def 1
    
        .= (
    PP_composition ((AS4 
    * (AS3 
    * (AS2 
    * AS1))),AS5)) by 
    PARTPR_2:def 1
    
        .= (AS5
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    PARTPR_2:def 1;
    
        then
    
        
    
    A42: B 
    = (AS6 
    * (AS5 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1))))) by 
    PARTPR_2:def 1;
    
        
    
        
    
    A43: ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1) 
    = (((AS5 
    * AS4) 
    * AS3) 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36
    
        .= ((AS5
    * AS4) 
    * (AS3 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
        .= (AS5
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    RELAT_1: 36;
    
        
    
        
    
    A44: (AS5 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) 
    = (AS5 
    * ((AS4 
    * AS3) 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
        .= (AS5
    * (((AS4 
    * AS3) 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
        
    
        
    
    A45: (((AS4 
    * AS3) 
    * AS2) 
    * AS1) 
    = ((AS4 
    * AS3) 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36
    
        .= (AS4
    * (AS3 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36;
    
        
    
        
    
    A46: (AS4 
    * (AS3 
    * (AS2 
    * AS1))) 
    = (AS4 
    * ((AS3 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
        
    
        
    
    A47: ((AS3 
    * AS2) 
    * AS1) 
    = (AS3 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36;
    
        B
    = (AS6 
    * ((AS5 
    * AS4) 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    A42,
    RELAT_1: 36
    
        .= (AS6
    * (((AS5 
    * AS4) 
    * AS3) 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
        .= (AS6
    * ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1)) by 
    RELAT_1: 36;
    
        then
    
        
    
    A48: d 
    in ( 
    dom ((((AS5 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1)) by 
    A9,
    FUNCT_1: 11;
    
        then
    
        
    
    A49: d 
    in ( 
    dom (((AS4 
    * AS3) 
    * AS2) 
    * AS1)) by 
    A43,
    A44,
    FUNCT_1: 11;
    
        then d
    in ( 
    dom ((AS3 
    * AS2) 
    * AS1)) by 
    A45,
    A46,
    FUNCT_1: 11;
    
        then
    
        
    
    A50: d 
    in ( 
    dom (AS2 
    * AS1)) by 
    A47,
    FUNCT_1: 11;
    
        then
    
        
    
    A51: ((AS2 
    * AS1) 
    . d) 
    = (AS2 
    . (AS1 
    . d)) by 
    FUNCT_1: 12;
    
        
    
        
    
    A52: ( 
    dom Di) 
    = { d where d be 
    NonatomicND of V, A : i 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A53: ( 
    dom Dj) 
    = { d where d be 
    NonatomicND of V, A : j 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A54: ( 
    dom Ds) 
    = { d where d be 
    NonatomicND of V, A : s 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A55: ( 
    dom Db) 
    = { d where d be 
    NonatomicND of V, A : b 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A56: ( 
    dom Dc) 
    = { d where d be 
    NonatomicND of V, A : c 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A57: ( 
    dom Dp) 
    = { d where d be 
    NonatomicND of V, A : p 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A58: ( 
    dom Dq) 
    = { d where d be 
    NonatomicND of V, A : q 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A59: ( 
    dom Dps) 
    = { d where d be 
    NonatomicND of V, A : ps 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A60: ( 
    dom Dqc) 
    = { d where d be 
    NonatomicND of V, A : qc 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A61: d 
    in ( 
    dom AS1) by 
    A48,
    FUNCT_1: 11;
    
        then
    
        reconsider Ad = (Ds
    . d1) as 
    TypeSCNominativeData of V, A by 
    A40,
    A11,
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L1 = (
    local_overlapping (V,A,d1,Ad,c)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A62: (PS 
    . 1) 
    = L1 by 
    A28,
    A30,
    NOMIN_8:def 14;
    
        
    
        
    
    A63: (AS1 
    . d) 
    = L1 by 
    A11,
    A61,
    NOMIN_2:def 7;
    
        then
    
        
    
    A64: L1 
    in ( 
    dom AS2) by 
    A50,
    FUNCT_1: 11;
    
        then
    
        reconsider DbL1 = (Db
    . L1) as 
    TypeSCNominativeData of V, A by 
    A41,
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L2 = (
    local_overlapping (V,A,L1,DbL1,s)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A65: 2 
    = (1 
    + 1) & 3 
    = (2 
    + 1) & 4 
    = (3 
    + 1) & 5 
    = (4 
    + 1) & 6 
    = (5 
    + 1); 
    
        
    
        
    
    A66: (PS 
    . 2) 
    = L2 by 
    A65,
    A28,
    A29,
    A31,
    A62,
    NOMIN_8:def 14;
    
        
    
        
    
    A67: (AS2 
    . L1) 
    = L2 by 
    A64,
    NOMIN_2:def 7;
    
        
    
        
    
    A68: ( 
    dom L1) 
    = ( 
    {c}
    \/ ( 
    dom d1)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A69: ( 
    dom L2) 
    = ( 
    {s}
    \/ ( 
    dom L1)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A70: d1 
    in ( 
    dom Ds) by 
    A12,
    A21,
    A54;
    
        
    
        
    
    A71: ( 
    dom PS) 
    = ( 
    dom prg) by 
    A29,
    FINSEQ_3: 29;
    
        
    
        
    
    A72: s 
    in ( 
    dom L2) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A31,
    A66,
    NOMIN_8: 25;
    
        then
    
        
    
    A73: L2 
    in ( 
    dom Ds) by 
    A54;
    
        
    
        
    
    A74: p 
    in ( 
    dom L1) by 
    A12,
    A23,
    A68,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A75: p 
    in ( 
    dom L2) by 
    A69,
    XBOOLE_0:def 3;
    
        then L2
    in ( 
    dom Dp) by 
    A57;
    
        then L2
    in (( 
    dom Ds) 
    /\ ( 
    dom Dp)) by 
    A73,
    XBOOLE_0:def 4;
    
        then
    
        
    
    A76: L2 
    in ( 
    dom  
    <:Dp, Ds:>) by
    FUNCT_3:def 7;
    
        then
    
        
    
    A77: ( 
    <:Dp, Ds:>
    . L2) 
    =  
    [(Dp
    . L2), (Ds 
    . L2)] by 
    FUNCT_3:def 7;
    
        
    
        
    
    A78: ( 
    dom ( 
    multiplication A)) 
    =  
    [:A, A:] by
    A1,
    FUNCT_2:def 1;
    
        p
    is_a_value_on L2 & s 
    is_a_value_on L2 by 
    A3;
    
        then
    [(Dp
    . L2), (Ds 
    . L2)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
        then
    
        
    
    A79: L2 
    in ( 
    dom Mps) by 
    A76,
    A78,
    A77,
    FUNCT_1: 11;
    
        then
    
        reconsider MpsL2 = (Mps
    . L2) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L3 = (
    local_overlapping (V,A,L2,MpsL2,ps)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A80: (PS 
    . 3) 
    = L3 by 
    A65,
    A28,
    A29,
    A32,
    A66,
    NOMIN_8:def 14;
    
        
    
        
    
    A81: ( 
    dom L3) 
    = ( 
    {ps}
    \/ ( 
    dom L2)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A82: s 
    in ( 
    dom L3) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A31,
    A80,
    NOMIN_8: 25;
    
        
    
        
    
    A83: q 
    in ( 
    dom L1) by 
    A12,
    A24,
    A68,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A84: q 
    in ( 
    dom L2) by 
    A69,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A85: q 
    in ( 
    dom L3) by 
    A81,
    XBOOLE_0:def 3;
    
        
    
        
    
    A86: c 
    in ( 
    dom L1) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A62,
    NOMIN_8: 25;
    
        
    
        
    
    A87: c 
    in ( 
    dom L2) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A66,
    NOMIN_8: 25;
    
        
    
        
    
    A88: c 
    in ( 
    dom L3) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A80,
    NOMIN_8: 25;
    
        
    
        
    
    A89: L3 
    in ( 
    dom Dq) by 
    A85,
    A58;
    
        L3
    in ( 
    dom Dc) by 
    A88,
    A56;
    
        then L3
    in (( 
    dom Dq) 
    /\ ( 
    dom Dc)) by 
    A89,
    XBOOLE_0:def 4;
    
        then
    
        
    
    A90: L3 
    in ( 
    dom  
    <:Dq, Dc:>) by
    FUNCT_3:def 7;
    
        then
    
        
    
    A91: ( 
    <:Dq, Dc:>
    . L3) 
    =  
    [(Dq
    . L3), (Dc 
    . L3)] by 
    FUNCT_3:def 7;
    
        q
    is_a_value_on L3 & c 
    is_a_value_on L3 by 
    A3;
    
        then
    [(Dq
    . L3), (Dc 
    . L3)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
        then
    
        
    
    A92: L3 
    in ( 
    dom Mqc) by 
    A90,
    A78,
    A91,
    FUNCT_1: 11;
    
        then
    
        reconsider MqcL3 = (Mqc
    . L3) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L4 = (
    local_overlapping (V,A,L3,MqcL3,qc)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A93: (PS 
    . 4) 
    = L4 by 
    A65,
    A28,
    A29,
    A33,
    A80,
    NOMIN_8:def 14;
    
        
    
        
    
    A94: ( 
    dom L4) 
    = ( 
    {qc}
    \/ ( 
    dom L3)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A95: qc 
    in ( 
    dom L4) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A33,
    A93,
    NOMIN_8: 25;
    
        
    
        
    
    A96: ps 
    in ( 
    dom L3) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A32,
    A80,
    NOMIN_8: 25;
    
        
    
        
    
    A97: ps 
    in ( 
    dom L4) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A32,
    A93,
    NOMIN_8: 25;
    
        
    
        
    
    A98: b 
    in ( 
    dom L1) by 
    A12,
    A22,
    A68,
    XBOOLE_0:def 3;
    
        
    
        
    
    A99: L4 
    in ( 
    dom Dps) by 
    A97,
    A59;
    
        L4
    in ( 
    dom Dqc) by 
    A95,
    A60;
    
        then L4
    in (( 
    dom Dps) 
    /\ ( 
    dom Dqc)) by 
    A99,
    XBOOLE_0:def 4;
    
        then
    
        
    
    A100: L4 
    in ( 
    dom  
    <:Dps, Dqc:>) by
    FUNCT_3:def 7;
    
        then
    
        
    
    A101: ( 
    <:Dps, Dqc:>
    . L4) 
    =  
    [(Dps
    . L4), (Dqc 
    . L4)] by 
    FUNCT_3:def 7;
    
        
    
        
    
    A102: ( 
    dom ( 
    subtraction A)) 
    =  
    [:A, A:] by
    A1,
    FUNCT_2:def 1;
    
        ps
    is_a_value_on L4 & qc 
    is_a_value_on L4 by 
    A3;
    
        then
    [(Dps
    . L4), (Dqc 
    . L4)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
        then
    
        
    
    A103: L4 
    in ( 
    dom Scs) by 
    A100,
    A102,
    A101,
    FUNCT_1: 11;
    
        then
    
        reconsider ScsL4 = (Scs
    . L4) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L5 = (
    local_overlapping (V,A,L4,ScsL4,b)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A104: (PS 
    . 5) 
    = L5 by 
    A65,
    A28,
    A29,
    A34,
    A93,
    NOMIN_8:def 14;
    
        
    
        
    
    A105: ( 
    dom L5) 
    = ( 
    {b}
    \/ ( 
    dom L4)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A106: i 
    in ( 
    dom L1) by 
    A12,
    A18,
    A68,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A107: i 
    in ( 
    dom L2) by 
    A69,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A108: i 
    in ( 
    dom L3) by 
    A81,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A109: i 
    in ( 
    dom L4) by 
    A94,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A110: i 
    in ( 
    dom L5) by 
    A105,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A111: L5 
    in ( 
    dom Di) by 
    A52;
    
        
    
        
    
    A112: j 
    in ( 
    dom L1) by 
    A12,
    A19,
    A68,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A113: j 
    in ( 
    dom L2) by 
    A69,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A114: j 
    in ( 
    dom L3) by 
    A81,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A115: j 
    in ( 
    dom L4) by 
    A94,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A116: j 
    in ( 
    dom L5) by 
    A105,
    XBOOLE_0:def 3;
    
        then
    
        
    
    A117: L5 
    in ( 
    dom Dj) by 
    A53;
    
        L5
    in (( 
    dom Di) 
    /\ ( 
    dom Dj)) by 
    A111,
    A117,
    XBOOLE_0:def 4;
    
        then
    
        
    
    A118: L5 
    in ( 
    dom  
    <:Di, Dj:>) by
    FUNCT_3:def 7;
    
        then
    
        
    
    A119: ( 
    <:Di, Dj:>
    . L5) 
    =  
    [(Di
    . L5), (Dj 
    . L5)] by 
    FUNCT_3:def 7;
    
        
    
        
    
    A120: ( 
    dom ( 
    addition A)) 
    =  
    [:A, A:] by
    A1,
    FUNCT_2:def 1;
    
        i
    is_a_value_on L5 & j 
    is_a_value_on L5 by 
    A3;
    
        then
    [(Di
    . L5), (Dj 
    . L5)] 
    in  
    [:A, A:] by
    ZFMISC_1: 87;
    
        then
    
        
    
    A121: L5 
    in ( 
    dom Aij) by 
    A120,
    A118,
    A119,
    FUNCT_1: 11;
    
        then
    
        reconsider AijL5 = (Aij
    . L5) as 
    TypeSCNominativeData of V, A by 
    PARTFUN1: 4,
    NOMIN_1: 39;
    
        reconsider L6 = (
    local_overlapping (V,A,L5,AijL5,i)) as 
    NonatomicND of V, A by 
    NOMIN_2: 9;
    
        
    
        
    
    A122: (PS 
    . 6) 
    = L6 by 
    A28,
    A29,
    A35,
    A104,
    NOMIN_8:def 14;
    
        
    
        
    
    A123: ( 
    dom L6) 
    = ( 
    {i}
    \/ ( 
    dom L5)) by 
    A2,
    NOMIN_4: 4;
    
        
    
        
    
    A124: d 
    in ( 
    dom (AS3 
    * (AS2 
    * AS1))) by 
    A45,
    A49,
    FUNCT_1: 11;
    
        then L2
    in ( 
    dom AS3) by 
    A51,
    A63,
    A67,
    FUNCT_1: 11;
    
        then
    
        
    
    A125: (AS3 
    . L2) 
    = L3 by 
    NOMIN_2:def 7;
    
        
    
        
    
    A126: ((AS3 
    * (AS2 
    * AS1)) 
    . d) 
    = (AS3 
    . ((AS2 
    * AS1) 
    . d)) by 
    A124,
    FUNCT_1: 12;
    
        then L3
    in ( 
    dom AS4) by 
    A49,
    A45,
    A125,
    A67,
    A51,
    A63,
    FUNCT_1: 11;
    
        then
    
        
    
    A127: (AS4 
    . L3) 
    = L4 by 
    NOMIN_2:def 7;
    
        
    
        
    
    A128: ((AS4 
    * (AS3 
    * (AS2 
    * AS1))) 
    . d) 
    = (AS4 
    . ((AS3 
    * (AS2 
    * AS1)) 
    . d)) by 
    A49,
    A45,
    FUNCT_1: 12;
    
        then L4
    in ( 
    dom AS5) by 
    A43,
    A48,
    A127,
    A125,
    A67,
    A63,
    A126,
    A51,
    FUNCT_1: 11;
    
        then
    
        
    
    A129: (AS5 
    . L4) 
    = L5 by 
    NOMIN_2:def 7;
    
        
    
        
    
    A130: ((AS5 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) 
    . d) 
    = (AS5 
    . ((AS4 
    * (AS3 
    * (AS2 
    * AS1))) 
    . d)) by 
    A43,
    A48,
    FUNCT_1: 12;
    
        B
    = ((AS6 
    * AS5) 
    * (AS4 
    * (AS3 
    * (AS2 
    * AS1)))) by 
    A42,
    RELAT_1: 36
    
        .= (((AS6
    * AS5) 
    * AS4) 
    * (AS3 
    * (AS2 
    * AS1))) by 
    RELAT_1: 36
    
        .= ((((AS6
    * AS5) 
    * AS4) 
    * AS3) 
    * (AS2 
    * AS1)) by 
    RELAT_1: 36
    
        .= (((((AS6
    * AS5) 
    * AS4) 
    * AS3) 
    * AS2) 
    * AS1) by 
    RELAT_1: 36;
    
        then (AS1
    . d) 
    in ( 
    dom ((((AS6 
    * AS5) 
    * AS4) 
    * AS3) 
    * AS2)) by 
    A9,
    FUNCT_1: 11;
    
        then (AS2
    . L1) 
    in ( 
    dom (((AS6 
    * AS5) 
    * AS4) 
    * AS3)) by 
    A63,
    FUNCT_1: 11;
    
        then (AS3
    . L2) 
    in ( 
    dom ((AS6 
    * AS5) 
    * AS4)) by 
    A67,
    FUNCT_1: 11;
    
        then (AS4
    . L3) 
    in ( 
    dom (AS6 
    * AS5)) by 
    A125,
    FUNCT_1: 11;
    
        then (AS5
    . L4) 
    in ( 
    dom AS6) by 
    A127,
    FUNCT_1: 11;
    
        
    
        then
    
        
    
    A131: L6 
    = (AS6 
    . L5) by 
    A129,
    NOMIN_2:def 7
    
        .= (B
    . d) by 
    A129,
    A127,
    A125,
    A67,
    A63,
    A51,
    A130,
    A128,
    A126,
    A9,
    A42,
    FUNCT_1: 12;
    
        
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,L6) 
    
        proof
    
          take L6;
    
          thus L6
    = L6; 
    
          
    
          
    
    A132: i 
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A35,
    A122,
    NOMIN_8: 25;
    
          
    
          
    
    A133: j 
    in ( 
    dom L6) by 
    A116,
    A123,
    XBOOLE_0:def 3;
    
          
    
          
    
    A134: n 
    in ( 
    dom L1) by 
    A12,
    A20,
    A68,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A135: n 
    in ( 
    dom L2) by 
    A69,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A136: n 
    in ( 
    dom L3) by 
    A81,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A137: n 
    in ( 
    dom L4) by 
    A94,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A138: n 
    in ( 
    dom L5) by 
    A105,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A139: n 
    in ( 
    dom L6) by 
    A123,
    XBOOLE_0:def 3;
    
          
    
          
    
    A140: s 
    in ( 
    dom L4) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A31,
    A93,
    NOMIN_8: 25;
    
          
    
          
    
    A141: s 
    in ( 
    dom L5) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A31,
    A104,
    NOMIN_8: 25;
    
          
    
          
    
    A142: s 
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A31,
    A122,
    NOMIN_8: 25;
    
          
    
          
    
    A143: b 
    in ( 
    dom L5) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A34,
    A104,
    NOMIN_8: 25;
    
          
    
          
    
    A144: b 
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A34,
    A122,
    NOMIN_8: 25;
    
          
    
          
    
    A145: c 
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A30,
    A28,
    A122,
    NOMIN_8: 25;
    
          
    
          
    
    A146: p 
    in ( 
    dom L3) by 
    A75,
    A81,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A147: p 
    in ( 
    dom L4) by 
    A94,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A148: p 
    in ( 
    dom L5) by 
    A105,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A149: p 
    in ( 
    dom L6) by 
    A123,
    XBOOLE_0:def 3;
    
          
    
          
    
    A150: q 
    in ( 
    dom L4) by 
    A85,
    A94,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A151: q 
    in ( 
    dom L5) by 
    A105,
    XBOOLE_0:def 3;
    
          then
    
          
    
    A152: q 
    in ( 
    dom L6) by 
    A123,
    XBOOLE_0:def 3;
    
          
    
          
    
    A153: ps 
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A32,
    A122,
    NOMIN_8: 25;
    
          qc
    in ( 
    dom L6) by 
    A1,
    A2,
    A3,
    A5,
    A9,
    A11,
    Th15,
    A39,
    A71,
    A70,
    A28,
    A30,
    A33,
    A122,
    NOMIN_8: 25;
    
          hence EN
    c= ( 
    dom L6) by 
    A132,
    A133,
    A139,
    A142,
    A144,
    A145,
    A149,
    A152,
    A153,
    ENUMSET1:def 8;
    
          
    
          
    
    A154: (L5 
    . j) 
    = (L4 
    . j) by 
    A2,
    A4,
    A5,
    A6,
    A115,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . j) by 
    A2,
    A4,
    A5,
    A6,
    A114,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L2
    . j) by 
    A2,
    A4,
    A5,
    A6,
    A113,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . j) by 
    A2,
    A4,
    A5,
    A6,
    A112,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= 1 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A13,
    A19,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          hence (L6
    . j) 
    = 1 by 
    A2,
    A4,
    A5,
    A6,
    A116,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          thus (L6
    . n) 
    = (L5 
    . n) by 
    A2,
    A4,
    A5,
    A6,
    A138,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L4
    . n) by 
    A2,
    A4,
    A5,
    A6,
    A137,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . n) by 
    A2,
    A4,
    A5,
    A6,
    A136,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L2
    . n) by 
    A2,
    A4,
    A5,
    A6,
    A135,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . n) by 
    A2,
    A4,
    A5,
    A6,
    A134,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= n0 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A14,
    A20,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          thus (L6
    . p) 
    = (L5 
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A148,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L4
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A147,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A146,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L2
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A75,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A74,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= p0 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A15,
    A23,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          thus (L6
    . q) 
    = (L5 
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A151,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L4
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A150,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A85,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L2
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A84,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A83,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= q0 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A16,
    A24,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          take I1 = (I
    + 1); 
    
          
    
          
    
    A155: (L5 
    . i) 
    = (L4 
    . i) by 
    A2,
    A4,
    A5,
    A6,
    A109,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . i) by 
    A2,
    A4,
    A5,
    A6,
    A108,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L2
    . i) by 
    A2,
    A4,
    A5,
    A6,
    A107,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . i) by 
    A2,
    A4,
    A5,
    A6,
    A106,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= I by
    A2,
    A4,
    A5,
    A6,
    A12,
    A18,
    A25,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          thus (L6
    . i) 
    = (Aij 
    . L5) by 
    NOMIN_2: 10
    
          .= I1 by
    A1,
    A121,
    A110,
    A116,
    A154,
    A155,
    NOMIN_5: 4;
    
          
    
          
    
    A156: L1 
    in ( 
    dom Db) by 
    A55,
    A98;
    
          
    
          
    
    A157: (L2 
    . s) 
    = (Db 
    . L1) by 
    NOMIN_2: 10
    
          .= (
    denaming (b,L1)) by 
    A156,
    NOMIN_1:def 18
    
          .= (L1
    . b) by 
    A98,
    NOMIN_1:def 12
    
          .= (
    Lucas (x0,y0,p0,q0,I1)) by 
    A2,
    A4,
    A5,
    A6,
    A27,
    A12,
    A22,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          thus (L6
    . s) 
    = (L5 
    . s) by 
    A2,
    A4,
    A5,
    A6,
    A141,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L4
    . s) by 
    A2,
    A4,
    A5,
    A6,
    A140,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L3
    . s) by 
    A2,
    A4,
    A5,
    A6,
    A82,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (
    Lucas (x0,y0,p0,q0,I1)) by 
    A2,
    A4,
    A5,
    A6,
    A72,
    A157,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          
    
    A158: (L2 
    . p) 
    = (L1 
    . p) by 
    A2,
    A4,
    A5,
    A6,
    A74,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= p0 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A15,
    A23,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          
    
    A159: (L4 
    . ps) 
    = (L3 
    . ps) by 
    A2,
    A4,
    A5,
    A6,
    A96,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (Mps
    . L2) by 
    NOMIN_2: 10
    
          .= (p0
    * ( 
    Lucas (x0,y0,p0,q0,I1))) by 
    A1,
    A79,
    A75,
    A72,
    A157,
    A158,
    NOMIN_5: 5;
    
          
    
          
    
    A160: (L3 
    . q) 
    = (L2 
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A84,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . q) by 
    A2,
    A4,
    A5,
    A6,
    A83,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= q0 by
    A2,
    A4,
    A5,
    A6,
    A12,
    A16,
    A24,
    NOMIN_5: 3,
    NOMIN_7: 1;
    
          
    
          
    
    A161: (L3 
    . c) 
    = (L2 
    . c) by 
    A2,
    A4,
    A5,
    A6,
    A87,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (L1
    . c) by 
    A2,
    A4,
    A5,
    A6,
    A86,
    NOMIN_5: 3,
    NOMIN_7: 1
    
          .= (Ds
    . d1) by 
    NOMIN_2: 10
    
          .= (
    denaming (s,d1)) by 
    A70,
    NOMIN_1:def 18
    
          .= (
    Lucas (x0,y0,p0,q0,I)) by 
    A12,
    A21,
    A26,
    NOMIN_1:def 12;
    
          
    
          
    
    A162: (L4 
    . qc) 
    = (Mqc 
    . L3) by 
    NOMIN_2: 10
    
          .= (q0
    * ( 
    Lucas (x0,y0,p0,q0,I))) by 
    A1,
    A92,
    A88,
    A85,
    A160,
    A161,
    NOMIN_5: 5;
    
          
    
          
    
    A163: (I1 
    + 1) 
    = (I 
    + 2); 
    
          
    
          thus (L6
    . b) 
    = (L5 
    . b) by 
    A2,
    A4,
    A5,
    A6,
    A143,
    NOMIN_7: 1,
    NOMIN_5: 3
    
          .= (Scs
    . L4) by 
    NOMIN_2: 10
    
          .= ((p0
    * ( 
    Lucas (x0,y0,p0,q0,I1))) 
    - (q0 
    * ( 
    Lucas (x0,y0,p0,q0,I)))) by 
    A1,
    A103,
    A97,
    A95,
    A159,
    A162,
    NOMIN_4: 15
    
          .= (
    Lucas (x0,y0,p0,q0,(I1 
    + 1))) by 
    Th5,
    A163;
    
        end;
    
        hence (inv
    . (B 
    . d)) 
    =  
    TRUE by 
    A10,
    A131,
    Def15;
    
      end;
    
      hence thesis by
    NOMIN_3: 28;
    
    end;
    
    theorem :: 
    
    NOMIN_9:17
    
    
    
    
    
    Th17: for V be non 
    empty  
    set holds for loc be V 
    -valued10
    -element  
    FinSequence holds A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 2) 
    is_a_value_on T & (loc 
    /. 4) 
    is_a_value_on T & (loc 
    /. 6) 
    is_a_value_on T & (loc 
    /. 7) 
    is_a_value_on T & (loc 
    /. 8) 
    is_a_value_on T & (loc 
    /. 9) 
    is_a_value_on T & (loc 
    /. 10) 
    is_a_value_on T) & loc is 
    one-to-one implies 
    <*(
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)), ( 
    Lucas_main_loop (A,loc)), ( 
    PP_and (( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3))),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0))))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      let V be non
    empty  
    set;
    
      let loc be V
    -valued10
    -element  
    FinSequence;
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set D = (
    ND (V,A)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set B = (
    Lucas_loop_body (A,loc)); 
    
      set E = (
    Equality (A,i,n)); 
    
      set N = (
    PP_inversion inv); 
    
      assume A is
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds i 
    is_a_value_on T & j 
    is_a_value_on T & s 
    is_a_value_on T & c 
    is_a_value_on T & p 
    is_a_value_on T & q 
    is_a_value_on T & ps 
    is_a_value_on T & qc 
    is_a_value_on T) & loc is 
    one-to-one;
    
      then
    <*inv, B, inv*> is
    SFHT of D by 
    Th16;
    
      then
    
      
    
    A1: 
    <*(
    PP_and (( 
    PP_not E),inv)), B, inv*> is 
    SFHT of D by 
    NOMIN_3: 3,
    NOMIN_3: 15;
    
      
    <*N, B, inv*> is
    SFHT of D by 
    NOMIN_3: 19;
    
      then
    <*(
    PP_and (( 
    PP_not E),N)), B, inv*> is 
    SFHT of D by 
    NOMIN_3: 3,
    NOMIN_3: 15;
    
      hence thesis by
    A1,
    NOMIN_3: 26;
    
    end;
    
    theorem :: 
    
    NOMIN_9:18
    
    
    
    
    
    Th18: for V be non 
    empty  
    set holds for loc be V 
    -valued10
    -element  
    FinSequence holds for val be 10 
    -element  
    FinSequence holds A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 2) 
    is_a_value_on T & (loc 
    /. 4) 
    is_a_value_on T & (loc 
    /. 6) 
    is_a_value_on T & (loc 
    /. 7) 
    is_a_value_on T & (loc 
    /. 8) 
    is_a_value_on T & (loc 
    /. 9) 
    is_a_value_on T & (loc 
    /. 10) 
    is_a_value_on T) & loc is 
    one-to-one & (loc,val) 
    are_different_wrt 10 implies 
    <*(
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)), ( 
    Lucas_main_part (A,loc,val)), ( 
    PP_and (( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3))),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0))))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      let V be non
    empty  
    set;
    
      let loc be V
    -valued10
    -element  
    FinSequence;
    
      let val be 10
    -element  
    FinSequence;
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set i1 = (val
    . 1), j1 = (val 
    . 2), n1 = (val 
    . 3), s1 = (val 
    . 4), b1 = (val 
    . 5), c1 = (val 
    . 6); 
    
      set p1 = (val
    . 7), q1 = (val 
    . 8), ps1 = (val 
    . 9), qc1 = (val 
    . 10); 
    
      set D = (
    ND (V,A)); 
    
      set P = (
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)); 
    
      set f = (
    initial_assignments (A,loc,val,10)); 
    
      set g = (
    Lucas_main_loop (A,loc)); 
    
      set Q = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set R = (
    PP_and (( 
    Equality (A,i,n)),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)))); 
    
      assume that
    
      
    
    A1: A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds i 
    is_a_value_on T & j 
    is_a_value_on T & s 
    is_a_value_on T & c 
    is_a_value_on T & p 
    is_a_value_on T & q 
    is_a_value_on T & ps 
    is_a_value_on T & qc 
    is_a_value_on T) and 
    
      
    
    A2: loc is 
    one-to-one and 
    
      
    
    A3: (loc,val) 
    are_different_wrt 10; 
    
      
    
      
    
    A4: ( 
    Seg 10) 
    c= ( 
    dom loc) by 
    FINSEQ_1: 89;
    
      (loc
    | ( 
    Seg 10)) is 
    one-to-one by 
    A2;
    
      then
    
      
    
    A5: 
    <*P, f, Q*> is
    SFHT of D by 
    A1,
    A3,
    A4,
    Th14;
    
      
    
      
    
    A6: 
    <*Q, g, R*> is
    SFHT of D by 
    A1,
    A2,
    Th17;
    
      
    <*(
    PP_inversion Q), g, R*> is 
    SFHT of D by 
    NOMIN_3: 19;
    
      hence thesis by
    A5,
    A6,
    NOMIN_3: 25;
    
    end;
    
    theorem :: 
    
    NOMIN_9:19
    
    
    
    
    
    Th19: V is non 
    empty & A 
    is_without_nonatomicND_wrt V & (for T holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 3) 
    is_a_value_on T) implies ( 
    PP_and (( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3))),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)))) 
    ||= ( 
    SC_Psuperpos (( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0)),( 
    denaming (V,A,(loc 
    /. 4))),z)) 
    
    proof
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set D = (
    ND (V,A)); 
    
      set res = (
    Lucas (x0,y0,p0,q0,n0)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set Di = (
    denaming (V,A,i)); 
    
      set Dn = (
    denaming (V,A,n)); 
    
      set Ds = (
    denaming (V,A,s)); 
    
      set Dz = (
    denaming (V,A,z)); 
    
      set ass = (
    SC_assignment (Ds,z)); 
    
      set out = (
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0)); 
    
      set F = (
    SC_Psuperpos (out,Ds,z)); 
    
      set E = (
    Equality (A,i,n)); 
    
      set EM =
    {i, j, n, s, b, c, p, q, ps, qc};
    
      assume that
    
      
    
    A1: V is non 
    empty & A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A2: for T holds i 
    is_a_value_on T & n 
    is_a_value_on T; 
    
      let d be
    Element of D such that 
    
      
    
    A3: d 
    in ( 
    dom ( 
    PP_and (E,inv))) and 
    
      
    
    A4: (( 
    PP_and (E,inv)) 
    . d) 
    =  
    TRUE ; 
    
      
    
      
    
    A5: ( 
    dom F) 
    = { d where d be 
    TypeSCNominativeData of V, A : ( 
    local_overlapping (V,A,d,(Ds 
    . d),z)) 
    in ( 
    dom out) & d 
    in ( 
    dom Ds) } by 
    NOMIN_2:def 11;
    
      
    
      
    
    A6: ( 
    dom out) 
    = { d where d be 
    TypeSCNominativeData of V, A : d 
    in ( 
    dom Dz) } by 
    NOMIN_8:def 13;
    
      
    
      
    
    A7: ( 
    dom Ds) 
    = { d where d be 
    NonatomicND of V, A : s 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A8: ( 
    dom Dz) 
    = { d where d be 
    NonatomicND of V, A : z 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
      
    
      
    
    A9: d 
    in ( 
    dom E) by 
    A3,
    A4,
    PARTPR_1: 23;
    
      
    
      
    
    A10: d 
    in ( 
    dom inv) by 
    A3,
    A4,
    PARTPR_1: 23;
    
      
    
      
    
    A11: ( 
    dom E) 
    = (( 
    dom Di) 
    /\ ( 
    dom Dn)) by 
    A2,
    NOMIN_4: 11;
    
      then
    
      
    
    A12: d 
    in ( 
    dom Di) by 
    A9,
    XBOOLE_0:def 4;
    
      (inv
    . d) 
    =  
    TRUE by 
    A3,
    A4,
    PARTPR_1: 23;
    
      then
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,d) by 
    A10,
    Def15;
    
      then
    
      consider d1 be
    NonatomicND of V, A such that 
    
      
    
    A13: d 
    = d1 and 
    
      
    
    A14: EM 
    c= ( 
    dom d1) and (d1 
    . j) 
    = 1 and 
    
      
    
    A15: (d1 
    . n) 
    = n0 and (d1 
    . p) 
    = p0 and (d1 
    . q) 
    = q0 and 
    
      
    
    A16: ex I be 
    Nat st I 
    = (d1 
    . i) & (d1 
    . s) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) & (d1 
    . b) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))); 
    
      
    
      
    
    A17: i 
    in EM by 
    ENUMSET1:def 8;
    
      
    
      
    
    A18: n 
    in EM by 
    ENUMSET1:def 8;
    
      
    
      
    
    A19: s 
    in EM by 
    ENUMSET1:def 8;
    
      reconsider dd = d as
    TypeSCNominativeData of V, A by 
    NOMIN_1: 39;
    
      set L = (
    local_overlapping (V,A,dd,(Ds 
    . dd),z)); 
    
      
    
      
    
    A20: dd 
    in ( 
    dom Ds) by 
    A7,
    A13,
    A14,
    A19;
    
      then (Ds
    . d1) 
    in D by 
    A13,
    PARTFUN1: 4;
    
      then
    
      
    
    A21: ex d2 be 
    TypeSCNominativeData of V, A st (Ds 
    . d1) 
    = d2; 
    
      then
    
      
    
    A22: L 
    in ( 
    dom Dz) by 
    A1,
    A13,
    NOMIN_4: 6;
    
      then
    
      
    
    A23: L 
    in ( 
    dom out) by 
    A6;
    
      hence
    
      
    
    A24: d 
    in ( 
    dom F) by 
    A5,
    A20;
    
      
    valid_Lucas_output_pred (A,z,x0,y0,p0,q0,n0,L) 
    
      proof
    
        consider I be
    Nat such that 
    
        
    
    A25: I 
    = (d1 
    . i) and 
    
        
    
    A26: (d1 
    . s) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) and (d1 
    . b) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))) by 
    A16;
    
        
    
        
    
    A27: ex d be 
    NonatomicND of V, A st L 
    = d & z 
    in ( 
    dom d) by 
    A8,
    A22;
    
        then
    
        reconsider dlo = L as
    NonatomicND of V, A; 
    
        take dlo;
    
        thus L
    = dlo; 
    
        (
    rng  
    <*z*>)
    =  
    {z} by
    FINSEQ_1: 38;
    
        hence (
    rng  
    <*z*>)
    c= ( 
    dom dlo) by 
    A27,
    ZFMISC_1: 31;
    
        let nn be
    Nat such that 
    
        
    
    A28: 1 
    <= nn and 
    
        
    
    A29: nn 
    <= ( 
    len  
    <*z*>);
    
        (
    len  
    <*z*>)
    = 1 by 
    FINSEQ_1: 39;
    
        then
    
        
    
    A30: nn 
    = 1 by 
    A28,
    A29,
    XXREAL_0: 1;
    
        
    
        
    
    A31: i 
    is_a_value_on dd by 
    A2;
    
        
    
        
    
    A32: n 
    is_a_value_on dd by 
    A2;
    
        
    
        
    
    A33: ( 
    dom  
    <:Di, Dn:>)
    = (( 
    dom Di) 
    /\ ( 
    dom Dn)) by 
    FUNCT_3:def 7;
    
        d
    in ( 
    dom  
    <:Di, Dn:>) by
    A9,
    A11,
    FUNCT_3:def 7;
    
        then
    
        
    
    A34: (E 
    . d) 
    = (( 
    Equality A) 
    . ( 
    <:Di, Dn:>
    . d)) by 
    FUNCT_1: 13;
    
        
    
        
    
    A35: d 
    in ( 
    dom Dn) by 
    A9,
    A11,
    XBOOLE_0:def 4;
    
        
    
        
    
    A36: ( 
    <:Di, Dn:>
    . d) 
    =  
    [(Di
    . d), (Dn 
    . d)] by 
    A9,
    A11,
    A33,
    FUNCT_3:def 7;
    
        
    
        
    
    A37: (Di 
    . d) 
    = ( 
    denaming (i,d1)) by 
    A13,
    A12,
    NOMIN_1:def 18
    
        .= (d1
    . i) by 
    A14,
    A17,
    NOMIN_1:def 12;
    
        
    
        
    
    A38: (Dn 
    . d) 
    = ( 
    denaming (n,d1)) by 
    A13,
    A35,
    NOMIN_1:def 18
    
        .= (d1
    . n) by 
    A14,
    A18,
    NOMIN_1:def 12;
    
        
    
        
    
    A39: (Ds 
    . d) 
    = ( 
    denaming (s,d1)) by 
    A20,
    A13,
    NOMIN_1:def 18
    
        .= (d1
    . s) by 
    A14,
    A19,
    NOMIN_1:def 12;
    
        ((
    Equality A) 
    . ((Di 
    . d),(Dn 
    . d))) 
    <>  
    FALSE by 
    A3,
    A4,
    A34,
    A36,
    PARTPR_1: 23;
    
        then (Di
    . d) 
    = (Dn 
    . d) by 
    A31,
    A32,
    NOMIN_4:def 9;
    
        hence thesis by
    A1,
    A13,
    A15,
    A30,
    A21,
    A25,
    A26,
    A37,
    A38,
    A39,
    NOMIN_2: 10;
    
      end;
    
      
    
      hence
    TRUE  
    = (out 
    . L) by 
    A23,
    NOMIN_8:def 13
    
      .= (F
    . d) by 
    A24,
    NOMIN_2: 35;
    
    end;
    
    theorem :: 
    
    NOMIN_9:20
    
    
    
    
    
    Th20: V is non 
    empty & A 
    is_without_nonatomicND_wrt V & (for T holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 3) 
    is_a_value_on T) implies 
    <*(
    PP_and (( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3))),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)))), ( 
    SC_assignment (( 
    denaming (V,A,(loc 
    /. 4))),z)), ( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      set s = (loc
    /. 4); 
    
      
    <*(
    SC_Psuperpos (( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0)),( 
    denaming (V,A,s)),z)), ( 
    SC_assignment (( 
    denaming (V,A,s)),z)), ( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) by 
    NOMIN_3: 29;
    
      hence thesis by
    Th19,
    NOMIN_3: 15;
    
    end;
    
    theorem :: 
    
    NOMIN_9:21
    
    
    
    
    
    Th21: (for T holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 3) 
    is_a_value_on T) implies 
    <*(
    PP_inversion ( 
    PP_and (( 
    Equality (A,(loc 
    /. 1),(loc 
    /. 3))),( 
    Lucas_inv (A,loc,x0,y0,p0,q0,n0))))), ( 
    SC_assignment (( 
    denaming (V,A,(loc 
    /. 4))),z)), ( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set D = (
    ND (V,A)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set O = (
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0)); 
    
      set Di = (
    denaming (V,A,i)); 
    
      set Dn = (
    denaming (V,A,n)); 
    
      set Ds = (
    denaming (V,A,s)); 
    
      set E = (
    Equality (A,i,n)); 
    
      set F = (
    PP_and (E,inv)); 
    
      set G = (
    SC_assignment (Ds,z)); 
    
      set N = (
    PP_inversion F); 
    
      assume
    
      
    
    A1: for T holds i 
    is_a_value_on T & n 
    is_a_value_on T; 
    
      now
    
        let d be
    TypeSCNominativeData of V, A such that 
    
        
    
    A2: d 
    in ( 
    dom N) and (N 
    . d) 
    =  
    TRUE and d 
    in ( 
    dom G) and (G 
    . d) 
    in ( 
    dom O); 
    
        
    
        
    
    A3: ( 
    dom F) 
    = { d where d be 
    Element of D : d 
    in ( 
    dom E) & (E 
    . d) 
    =  
    FALSE or d 
    in ( 
    dom inv) & (inv 
    . d) 
    =  
    FALSE or d 
    in ( 
    dom E) & (E 
    . d) 
    =  
    TRUE & d 
    in ( 
    dom inv) & (inv 
    . d) 
    =  
    TRUE } by 
    PARTPR_1: 16;
    
        
    
        
    
    A4: ( 
    dom Di) 
    = { d where d be 
    NonatomicND of V, A : i 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A5: ( 
    dom Dn) 
    = { d where d be 
    NonatomicND of V, A : n 
    in ( 
    dom d) } by 
    NOMIN_1:def 18;
    
        
    
        
    
    A6: ( 
    dom E) 
    = (( 
    dom Di) 
    /\ ( 
    dom Dn)) by 
    A1,
    NOMIN_4: 11;
    
        
    
        
    
    A7: not d 
    in ( 
    dom F) by 
    A2,
    PARTPR_2: 9;
    
        (
    dom E) 
    c= ( 
    dom F) by 
    PARTPR_2: 3;
    
        then not d
    in ( 
    dom E) by 
    A2,
    PARTPR_2: 9;
    
        then
    
        
    
    A8: not d 
    in ( 
    dom Di) or not d 
    in ( 
    dom Dn) by 
    A6,
    XBOOLE_0:def 4;
    
        (
    dom inv) 
    = D by 
    Def15;
    
        then
    
        
    
    A9: d 
    in ( 
    dom inv); 
    
        then (inv
    . d) 
    <>  
    FALSE by 
    A3,
    A7;
    
        then
    Lucas_inv_pred (A,loc,x0,y0,p0,q0,n0,d) by 
    A9,
    Def15;
    
        then
    
        consider d1 be
    NonatomicND of V, A such that 
    
        
    
    A10: d 
    = d1 and 
    
        
    
    A11: 
    {i, j, n, s, b, c, p, q, ps, qc}
    c= ( 
    dom d1) and (d1 
    . j) 
    = 1 & (d1 
    . n) 
    = n0 & (d1 
    . p) 
    = p0 & (d1 
    . q) 
    = q0 & ex I be 
    Nat st I 
    = (d1 
    . i) & (d1 
    . s) 
    = ( 
    Lucas (x0,y0,p0,q0,I)) & (d1 
    . b) 
    = ( 
    Lucas (x0,y0,p0,q0,(I 
    + 1))); 
    
        i
    in  
    {i, j, n, s, b, c, p, q, ps, qc} & n
    in  
    {i, j, n, s, b, c, p, q, ps, qc} by
    ENUMSET1:def 8;
    
        hence (O
    . (G 
    . d)) 
    =  
    TRUE by 
    A4,
    A5,
    A8,
    A10,
    A11;
    
      end;
    
      hence thesis by
    NOMIN_3: 28;
    
    end;
    
    ::$Notion-Name
    
    theorem :: 
    
    NOMIN_9:22
    
    for V be non
    empty  
    set holds for loc be V 
    -valued10
    -element  
    FinSequence holds for val be 10 
    -element  
    FinSequence holds for z be 
    Element of V holds A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V & (for T be 
    TypeSCNominativeData of V, A holds (loc 
    /. 1) 
    is_a_value_on T & (loc 
    /. 2) 
    is_a_value_on T & (loc 
    /. 3) 
    is_a_value_on T & (loc 
    /. 4) 
    is_a_value_on T & (loc 
    /. 6) 
    is_a_value_on T & (loc 
    /. 7) 
    is_a_value_on T & (loc 
    /. 8) 
    is_a_value_on T & (loc 
    /. 9) 
    is_a_value_on T & (loc 
    /. 10) 
    is_a_value_on T) & loc is 
    one-to-one & (loc,val) 
    are_different_wrt 10 implies 
    <*(
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)), ( 
    Lucas_program (A,loc,val,z)), ( 
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0))*> is 
    SFHT of ( 
    ND (V,A)) 
    
    proof
    
      let V be non
    empty  
    set;
    
      let loc be V
    -valued10
    -element  
    FinSequence;
    
      let val be 10
    -element  
    FinSequence;
    
      let z be
    Element of V; 
    
      set i = (loc
    /. 1), j = (loc 
    /. 2), n = (loc 
    /. 3), s = (loc 
    /. 4), b = (loc 
    /. 5), c = (loc 
    /. 6); 
    
      set p = (loc
    /. 7), q = (loc 
    /. 8), ps = (loc 
    /. 9), qc = (loc 
    /. 10); 
    
      set i1 = (val
    . 1), j1 = (val 
    . 2), n1 = (val 
    . 3), s1 = (val 
    . 4); 
    
      set D = (
    ND (V,A)); 
    
      set P = (
    valid_Lucas_input (V,A,val,x0,y0,p0,q0,n0)); 
    
      set F = (
    Lucas_main_part (A,loc,val)); 
    
      set G = (
    SC_assignment (( 
    denaming (V,A,s)),z)); 
    
      set Q = (
    valid_Lucas_output (A,z,x0,y0,p0,q0,n0)); 
    
      set inv = (
    Lucas_inv (A,loc,x0,y0,p0,q0,n0)); 
    
      set E = (
    Equality (A,i,n)); 
    
      assume that
    
      
    
    A1: A is 
    complex-containing & A 
    is_without_nonatomicND_wrt V and 
    
      
    
    A2: for T be 
    TypeSCNominativeData of V, A holds i 
    is_a_value_on T & j 
    is_a_value_on T & n 
    is_a_value_on T & s 
    is_a_value_on T & c 
    is_a_value_on T & p 
    is_a_value_on T & q 
    is_a_value_on T & ps 
    is_a_value_on T & qc 
    is_a_value_on T; 
    
      assume loc is
    one-to-one & (loc,val) 
    are_different_wrt 10; 
    
      then
    
      
    
    A3: 
    <*P, F, (
    PP_and (E,inv))*> is 
    SFHT of D by 
    A1,
    A2,
    Th18;
    
      
    
      
    
    A4: 
    <*(
    PP_and (E,inv)), G, Q*> is 
    SFHT of D by 
    A1,
    A2,
    Th20;
    
      
    <*(
    PP_inversion ( 
    PP_and (E,inv))), G, Q*> is 
    SFHT of D by 
    A2,
    Th21;
    
      hence thesis by
    A3,
    A4,
    NOMIN_3: 25;
    
    end;