| Step | Hyp | Ref | Expression | 
        
          | 1 | 
           | 
          axext | 
          power (upto a) == upto (2 ^ a) -> power (upto a) = upto (2 ^ a)  | 
        
        
          | 2 | 
           | 
          bitr4 | 
          (x e. power (upto a) <-> x C_ upto a) -> (x e. upto (2 ^ a) <-> x C_ upto a) -> (x e. power (upto a) <-> x e. upto (2 ^ a))  | 
        
        
          | 3 | 
           | 
          elpower | 
          x e. power (upto a) <-> x C_ upto a  | 
        
        
          | 4 | 
          2, 3 | 
          ax_mp | 
          (x e. upto (2 ^ a) <-> x C_ upto a) -> (x e. power (upto a) <-> x e. upto (2 ^ a))  | 
        
        
          | 5 | 
           | 
          bitr4 | 
          (x e. upto (2 ^ a) <-> x < 2 ^ a) -> (x C_ upto a <-> x < 2 ^ a) -> (x e. upto (2 ^ a) <-> x C_ upto a)  | 
        
        
          | 6 | 
           | 
          elupto | 
          x e. upto (2 ^ a) <-> x < 2 ^ a  | 
        
        
          | 7 | 
          5, 6 | 
          ax_mp | 
          (x C_ upto a <-> x < 2 ^ a) -> (x e. upto (2 ^ a) <-> x C_ upto a)  | 
        
        
          | 8 | 
           | 
          lteq2 | 
          suc (upto a) = 2 ^ a -> (x < suc (upto a) <-> x < 2 ^ a)  | 
        
        
          | 9 | 
           | 
          sucupto | 
          suc (upto a) = 2 ^ a  | 
        
        
          | 10 | 
          8, 9 | 
          ax_mp | 
          x < suc (upto a) <-> x < 2 ^ a  | 
        
        
          | 11 | 
           | 
          leltsuc | 
          x <= upto a <-> x < suc (upto a)  | 
        
        
          | 12 | 
           | 
          ssle | 
          x C_ upto a -> x <= upto a  | 
        
        
          | 13 | 
          11, 12 | 
          sylib | 
          x C_ upto a -> x < suc (upto a)  | 
        
        
          | 14 | 
          10, 13 | 
          sylib | 
          x C_ upto a -> x < 2 ^ a  | 
        
        
          | 15 | 
           | 
          shreq0 | 
          shr x a = 0 <-> x < 2 ^ a  | 
        
        
          | 16 | 
           | 
          elupto | 
          y e. upto a <-> y < a  | 
        
        
          | 17 | 
           | 
          el02 | 
          ~y - a e. 0  | 
        
        
          | 18 | 
           | 
          anll | 
          shr x a = 0 /\ y e. x /\ ~y < a -> shr x a = 0  | 
        
        
          | 19 | 
          18 | 
          elneq2d | 
          shr x a = 0 /\ y e. x /\ ~y < a -> (y - a e. shr x a <-> y - a e. 0)  | 
        
        
          | 20 | 
           | 
          elshr | 
          y - a e. shr x a <-> y - a + a e. x  | 
        
        
          | 21 | 
           | 
          npcan | 
          a <= y -> y - a + a = y  | 
        
        
          | 22 | 
           | 
          lenlt | 
          a <= y <-> ~y < a  | 
        
        
          | 23 | 
           | 
          anr | 
          shr x a = 0 /\ y e. x /\ ~y < a -> ~y < a  | 
        
        
          | 24 | 
          22, 23 | 
          sylibr | 
          shr x a = 0 /\ y e. x /\ ~y < a -> a <= y  | 
        
        
          | 25 | 
          21, 24 | 
          syl | 
          shr x a = 0 /\ y e. x /\ ~y < a -> y - a + a = y  | 
        
        
          | 26 | 
          25 | 
          eleq1d | 
          shr x a = 0 /\ y e. x /\ ~y < a -> (y - a + a e. x <-> y e. x)  | 
        
        
          | 27 | 
           | 
          anlr | 
          shr x a = 0 /\ y e. x /\ ~y < a -> y e. x  | 
        
        
          | 28 | 
          26, 27 | 
          mpbird | 
          shr x a = 0 /\ y e. x /\ ~y < a -> y - a + a e. x  | 
        
        
          | 29 | 
          20, 28 | 
          sylibr | 
          shr x a = 0 /\ y e. x /\ ~y < a -> y - a e. shr x a  | 
        
        
          | 30 | 
          19, 29 | 
          mpbid | 
          shr x a = 0 /\ y e. x /\ ~y < a -> y - a e. 0  | 
        
        
          | 31 | 
          30 | 
          exp | 
          shr x a = 0 /\ y e. x -> ~y < a -> y - a e. 0  | 
        
        
          | 32 | 
          31 | 
          con1d | 
          shr x a = 0 /\ y e. x -> ~y - a e. 0 -> y < a  | 
        
        
          | 33 | 
          17, 32 | 
          mpi | 
          shr x a = 0 /\ y e. x -> y < a  | 
        
        
          | 34 | 
          16, 33 | 
          sylibr | 
          shr x a = 0 /\ y e. x -> y e. upto a  | 
        
        
          | 35 | 
          34 | 
          exp | 
          shr x a = 0 -> y e. x -> y e. upto a  | 
        
        
          | 36 | 
          35 | 
          iald | 
          shr x a = 0 -> A. y (y e. x -> y e. upto a)  | 
        
        
          | 37 | 
          36 | 
          conv subset | 
          shr x a = 0 -> x C_ upto a  | 
        
        
          | 38 | 
          15, 37 | 
          sylbir | 
          x < 2 ^ a -> x C_ upto a  | 
        
        
          | 39 | 
          14, 38 | 
          ibii | 
          x C_ upto a <-> x < 2 ^ a  | 
        
        
          | 40 | 
          7, 39 | 
          ax_mp | 
          x e. upto (2 ^ a) <-> x C_ upto a  | 
        
        
          | 41 | 
          4, 40 | 
          ax_mp | 
          x e. power (upto a) <-> x e. upto (2 ^ a)  | 
        
        
          | 42 | 
          41 | 
          ax_gen | 
          A. x (x e. power (upto a) <-> x e. upto (2 ^ a))  | 
        
        
          | 43 | 
          42 | 
          conv eqs | 
          power (upto a) == upto (2 ^ a)  | 
        
        
          | 44 | 
          1, 43 | 
          ax_mp | 
          power (upto a) = upto (2 ^ a)  |