| Step | Hyp | Ref | Expression | 
        
          | 1 | 
           | 
          addeq2 | 
          x = c -> b + x = b + c  | 
        
        
          | 2 | 
          1 | 
          muleq2d | 
          x = c -> a * (b + x) = a * (b + c)  | 
        
        
          | 3 | 
           | 
          muleq2 | 
          x = c -> a * x = a * c  | 
        
        
          | 4 | 
          3 | 
          addeq2d | 
          x = c -> a * b + a * x = a * b + a * c  | 
        
        
          | 5 | 
          2, 4 | 
          eqeqd | 
          x = c -> (a * (b + x) = a * b + a * x <-> a * (b + c) = a * b + a * c)  | 
        
        
          | 6 | 
           | 
          addeq2 | 
          x = 0 -> b + x = b + 0  | 
        
        
          | 7 | 
          6 | 
          muleq2d | 
          x = 0 -> a * (b + x) = a * (b + 0)  | 
        
        
          | 8 | 
           | 
          muleq2 | 
          x = 0 -> a * x = a * 0  | 
        
        
          | 9 | 
          8 | 
          addeq2d | 
          x = 0 -> a * b + a * x = a * b + a * 0  | 
        
        
          | 10 | 
          7, 9 | 
          eqeqd | 
          x = 0 -> (a * (b + x) = a * b + a * x <-> a * (b + 0) = a * b + a * 0)  | 
        
        
          | 11 | 
           | 
          addeq2 | 
          x = y -> b + x = b + y  | 
        
        
          | 12 | 
          11 | 
          muleq2d | 
          x = y -> a * (b + x) = a * (b + y)  | 
        
        
          | 13 | 
           | 
          muleq2 | 
          x = y -> a * x = a * y  | 
        
        
          | 14 | 
          13 | 
          addeq2d | 
          x = y -> a * b + a * x = a * b + a * y  | 
        
        
          | 15 | 
          12, 14 | 
          eqeqd | 
          x = y -> (a * (b + x) = a * b + a * x <-> a * (b + y) = a * b + a * y)  | 
        
        
          | 16 | 
           | 
          addeq2 | 
          x = suc y -> b + x = b + suc y  | 
        
        
          | 17 | 
          16 | 
          muleq2d | 
          x = suc y -> a * (b + x) = a * (b + suc y)  | 
        
        
          | 18 | 
           | 
          muleq2 | 
          x = suc y -> a * x = a * suc y  | 
        
        
          | 19 | 
          18 | 
          addeq2d | 
          x = suc y -> a * b + a * x = a * b + a * suc y  | 
        
        
          | 20 | 
          17, 19 | 
          eqeqd | 
          x = suc y -> (a * (b + x) = a * b + a * x <-> a * (b + suc y) = a * b + a * suc y)  | 
        
        
          | 21 | 
           | 
          eqtr4 | 
          a * (b + 0) = a * b -> a * b + a * 0 = a * b -> a * (b + 0) = a * b + a * 0  | 
        
        
          | 22 | 
           | 
          muleq2 | 
          b + 0 = b -> a * (b + 0) = a * b  | 
        
        
          | 23 | 
           | 
          add0 | 
          b + 0 = b  | 
        
        
          | 24 | 
          22, 23 | 
          ax_mp | 
          a * (b + 0) = a * b  | 
        
        
          | 25 | 
          21, 24 | 
          ax_mp | 
          a * b + a * 0 = a * b -> a * (b + 0) = a * b + a * 0  | 
        
        
          | 26 | 
           | 
          eqtr | 
          a * b + a * 0 = a * b + 0 -> a * b + 0 = a * b -> a * b + a * 0 = a * b  | 
        
        
          | 27 | 
           | 
          addeq2 | 
          a * 0 = 0 -> a * b + a * 0 = a * b + 0  | 
        
        
          | 28 | 
           | 
          mul0 | 
          a * 0 = 0  | 
        
        
          | 29 | 
          27, 28 | 
          ax_mp | 
          a * b + a * 0 = a * b + 0  | 
        
        
          | 30 | 
          26, 29 | 
          ax_mp | 
          a * b + 0 = a * b -> a * b + a * 0 = a * b  | 
        
        
          | 31 | 
           | 
          add0 | 
          a * b + 0 = a * b  | 
        
        
          | 32 | 
          30, 31 | 
          ax_mp | 
          a * b + a * 0 = a * b  | 
        
        
          | 33 | 
          25, 32 | 
          ax_mp | 
          a * (b + 0) = a * b + a * 0  | 
        
        
          | 34 | 
           | 
          eqtr | 
          a * (b + suc y) = a * suc (b + y) -> a * suc (b + y) = a * (b + y) + a -> a * (b + suc y) = a * (b + y) + a  | 
        
        
          | 35 | 
           | 
          muleq2 | 
          b + suc y = suc (b + y) -> a * (b + suc y) = a * suc (b + y)  | 
        
        
          | 36 | 
           | 
          addS | 
          b + suc y = suc (b + y)  | 
        
        
          | 37 | 
          35, 36 | 
          ax_mp | 
          a * (b + suc y) = a * suc (b + y)  | 
        
        
          | 38 | 
          34, 37 | 
          ax_mp | 
          a * suc (b + y) = a * (b + y) + a -> a * (b + suc y) = a * (b + y) + a  | 
        
        
          | 39 | 
           | 
          mulS | 
          a * suc (b + y) = a * (b + y) + a  | 
        
        
          | 40 | 
          38, 39 | 
          ax_mp | 
          a * (b + suc y) = a * (b + y) + a  | 
        
        
          | 41 | 
           | 
          eqtr4 | 
          a * b + a * suc y = a * b + (a * y + a) -> a * b + a * y + a = a * b + (a * y + a) -> a * b + a * suc y = a * b + a * y + a  | 
        
        
          | 42 | 
           | 
          addeq2 | 
          a * suc y = a * y + a -> a * b + a * suc y = a * b + (a * y + a)  | 
        
        
          | 43 | 
           | 
          mulS | 
          a * suc y = a * y + a  | 
        
        
          | 44 | 
          42, 43 | 
          ax_mp | 
          a * b + a * suc y = a * b + (a * y + a)  | 
        
        
          | 45 | 
          41, 44 | 
          ax_mp | 
          a * b + a * y + a = a * b + (a * y + a) -> a * b + a * suc y = a * b + a * y + a  | 
        
        
          | 46 | 
           | 
          addass | 
          a * b + a * y + a = a * b + (a * y + a)  | 
        
        
          | 47 | 
          45, 46 | 
          ax_mp | 
          a * b + a * suc y = a * b + a * y + a  | 
        
        
          | 48 | 
           | 
          addeq1 | 
          a * (b + y) = a * b + a * y -> a * (b + y) + a = a * b + a * y + a  | 
        
        
          | 49 | 
          40, 47, 48 | 
          eqtr4g | 
          a * (b + y) = a * b + a * y -> a * (b + suc y) = a * b + a * suc y  | 
        
        
          | 50 | 
          5, 10, 15, 20, 33, 49 | 
          ind | 
          a * (b + c) = a * b + a * c  |