| Step | Hyp | Ref | Expression | 
        
          | 1 | 
           | 
          id | 
          _1 = a -> _1 = a  | 
        
        
          | 2 | 
           | 
          eqidd | 
          _1 = a -> x, y = x, y  | 
        
        
          | 3 | 
          1, 2 | 
          eqeqd | 
          _1 = a -> (_1 = x, y <-> a = x, y)  | 
        
        
          | 4 | 
          3 | 
          exeqd | 
          _1 = a -> (E. y _1 = x, y <-> E. y a = x, y)  | 
        
        
          | 5 | 
          4 | 
          exeqd | 
          _1 = a -> (E. x E. y _1 = x, y <-> E. x E. y a = x, y)  | 
        
        
          | 6 | 
           | 
          id | 
          _1 = 0 -> _1 = 0  | 
        
        
          | 7 | 
           | 
          eqidd | 
          _1 = 0 -> x, y = x, y  | 
        
        
          | 8 | 
          6, 7 | 
          eqeqd | 
          _1 = 0 -> (_1 = x, y <-> 0 = x, y)  | 
        
        
          | 9 | 
          8 | 
          exeqd | 
          _1 = 0 -> (E. y _1 = x, y <-> E. y 0 = x, y)  | 
        
        
          | 10 | 
          9 | 
          exeqd | 
          _1 = 0 -> (E. x E. y _1 = x, y <-> E. x E. y 0 = x, y)  | 
        
        
          | 11 | 
           | 
          id | 
          _1 = a1 -> _1 = a1  | 
        
        
          | 12 | 
           | 
          eqidd | 
          _1 = a1 -> x, y = x, y  | 
        
        
          | 13 | 
          11, 12 | 
          eqeqd | 
          _1 = a1 -> (_1 = x, y <-> a1 = x, y)  | 
        
        
          | 14 | 
          13 | 
          exeqd | 
          _1 = a1 -> (E. y _1 = x, y <-> E. y a1 = x, y)  | 
        
        
          | 15 | 
          14 | 
          exeqd | 
          _1 = a1 -> (E. x E. y _1 = x, y <-> E. x E. y a1 = x, y)  | 
        
        
          | 16 | 
           | 
          id | 
          _1 = suc a1 -> _1 = suc a1  | 
        
        
          | 17 | 
           | 
          eqidd | 
          _1 = suc a1 -> x, y = x, y  | 
        
        
          | 18 | 
          16, 17 | 
          eqeqd | 
          _1 = suc a1 -> (_1 = x, y <-> suc a1 = x, y)  | 
        
        
          | 19 | 
          18 | 
          exeqd | 
          _1 = suc a1 -> (E. y _1 = x, y <-> E. y suc a1 = x, y)  | 
        
        
          | 20 | 
          19 | 
          exeqd | 
          _1 = suc a1 -> (E. x E. y _1 = x, y <-> E. x E. y suc a1 = x, y)  | 
        
        
          | 21 | 
           | 
          pr0 | 
          0, 0 = 0  | 
        
        
          | 22 | 
           | 
          preq | 
          x = 0 -> y = 0 -> x, y = 0, 0  | 
        
        
          | 23 | 
          22 | 
          imp | 
          x = 0 /\ y = 0 -> x, y = 0, 0  | 
        
        
          | 24 | 
          23 | 
          eqcomd | 
          x = 0 /\ y = 0 -> 0, 0 = x, y  | 
        
        
          | 25 | 
          21, 24 | 
          syl5eqr | 
          x = 0 /\ y = 0 -> 0 = x, y  | 
        
        
          | 26 | 
          25 | 
          iexde | 
          x = 0 -> E. y 0 = x, y  | 
        
        
          | 27 | 
          26 | 
          iexie | 
          E. x E. y 0 = x, y  | 
        
        
          | 28 | 
           | 
          anl | 
          m = x /\ n = y -> m = x  | 
        
        
          | 29 | 
           | 
          anr | 
          m = x /\ n = y -> n = y  | 
        
        
          | 30 | 
          28, 29 | 
          preqd | 
          m = x /\ n = y -> m, n = x, y  | 
        
        
          | 31 | 
          30 | 
          eqeq2d | 
          m = x /\ n = y -> (suc a1 = m, n <-> suc a1 = x, y)  | 
        
        
          | 32 | 
          31 | 
          cbvexd | 
          m = x -> (E. n suc a1 = m, n <-> E. y suc a1 = x, y)  | 
        
        
          | 33 | 
          32 | 
          cbvex | 
          E. m E. n suc a1 = m, n <-> E. x E. y suc a1 = x, y  | 
        
        
          | 34 | 
           | 
          an3l | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> a1 = x, y  | 
        
        
          | 35 | 
          34 | 
          suceqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> suc a1 = suc (x, y)  | 
        
        
          | 36 | 
           | 
          addS | 
          (x + y) * suc (x + y) // 2 + suc y = suc ((x + y) * suc (x + y) // 2 + y)  | 
        
        
          | 37 | 
          36 | 
          conv pr | 
          (x + y) * suc (x + y) // 2 + suc y = suc (x, y)  | 
        
        
          | 38 | 
           | 
          mulcan2 | 
          2 != 0 -> (2 * ((x + y) * suc (x + y) // 2 + suc y) = 2 * (suc y * suc (suc y) // 2) <-> (x + y) * suc (x + y) // 2 + suc y = suc y * suc (suc y) // 2)  | 
        
        
          | 39 | 
           | 
          d2ne0 | 
          2 != 0  | 
        
        
          | 40 | 
          38, 39 | 
          ax_mp | 
          2 * ((x + y) * suc (x + y) // 2 + suc y) = 2 * (suc y * suc (suc y) // 2) <-> (x + y) * suc (x + y) // 2 + suc y = suc y * suc (suc y) // 2  | 
        
        
          | 41 | 
           | 
          muladd | 
          2 * ((x + y) * suc (x + y) // 2 + suc y) = 2 * ((x + y) * suc (x + y) // 2) + 2 * suc y  | 
        
        
          | 42 | 
           | 
          eqtr | 
          2 * (suc y * suc (suc y) // 2) = suc y * suc (suc y) -> suc y * suc (suc y) = suc (suc y) * suc y -> 2 * (suc y * suc (suc y) // 2) = suc (suc y) * suc y  | 
        
        
          | 43 | 
           | 
          muldiv3 | 
          2 || suc y * suc (suc y) -> 2 * (suc y * suc (suc y) // 2) = suc y * suc (suc y)  | 
        
        
          | 44 | 
           | 
          prlem1 | 
          2 || suc y * suc (suc y)  | 
        
        
          | 45 | 
          43, 44 | 
          ax_mp | 
          2 * (suc y * suc (suc y) // 2) = suc y * suc (suc y)  | 
        
        
          | 46 | 
          42, 45 | 
          ax_mp | 
          suc y * suc (suc y) = suc (suc y) * suc y -> 2 * (suc y * suc (suc y) // 2) = suc (suc y) * suc y  | 
        
        
          | 47 | 
           | 
          mulcom | 
          suc y * suc (suc y) = suc (suc y) * suc y  | 
        
        
          | 48 | 
          46, 47 | 
          ax_mp | 
          2 * (suc y * suc (suc y) // 2) = suc (suc y) * suc y  | 
        
        
          | 49 | 
           | 
          muldiv3 | 
          2 || (x + y) * suc (x + y) -> 2 * ((x + y) * suc (x + y) // 2) = (x + y) * suc (x + y)  | 
        
        
          | 50 | 
           | 
          prlem1 | 
          2 || (x + y) * suc (x + y)  | 
        
        
          | 51 | 
          49, 50 | 
          ax_mp | 
          2 * ((x + y) * suc (x + y) // 2) = (x + y) * suc (x + y)  | 
        
        
          | 52 | 
           | 
          add01 | 
          0 + y = y  | 
        
        
          | 53 | 
           | 
          anr | 
          a1 = x, y /\ x = 0 -> x = 0  | 
        
        
          | 54 | 
          53 | 
          anwll | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> x = 0  | 
        
        
          | 55 | 
          54 | 
          addeq1d | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> x + y = 0 + y  | 
        
        
          | 56 | 
          52, 55 | 
          syl6eq | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> x + y = y  | 
        
        
          | 57 | 
          56 | 
          suceqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> suc (x + y) = suc y  | 
        
        
          | 58 | 
          56, 57 | 
          muleqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (x + y) * suc (x + y) = y * suc y  | 
        
        
          | 59 | 
          51, 58 | 
          syl5eq | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> 2 * ((x + y) * suc (x + y) // 2) = y * suc y  | 
        
        
          | 60 | 
          59 | 
          addeq1d | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> 2 * ((x + y) * suc (x + y) // 2) + 2 * suc y = y * suc y + 2 * suc y  | 
        
        
          | 61 | 
           | 
          addmul | 
          (y + 2) * suc y = y * suc y + 2 * suc y  | 
        
        
          | 62 | 
           | 
          muleq1 | 
          y + 2 = suc (suc y) -> (y + 2) * suc y = suc (suc y) * suc y  | 
        
        
          | 63 | 
           | 
          eqtr | 
          y + 2 = suc (y + 1) -> suc (y + 1) = suc (suc y) -> y + 2 = suc (suc y)  | 
        
        
          | 64 | 
           | 
          addS | 
          y + suc 1 = suc (y + 1)  | 
        
        
          | 65 | 
          64 | 
          conv d2 | 
          y + 2 = suc (y + 1)  | 
        
        
          | 66 | 
          63, 65 | 
          ax_mp | 
          suc (y + 1) = suc (suc y) -> y + 2 = suc (suc y)  | 
        
        
          | 67 | 
           | 
          suceq | 
          y + 1 = suc y -> suc (y + 1) = suc (suc y)  | 
        
        
          | 68 | 
           | 
          add12 | 
          y + 1 = suc y  | 
        
        
          | 69 | 
          67, 68 | 
          ax_mp | 
          suc (y + 1) = suc (suc y)  | 
        
        
          | 70 | 
          66, 69 | 
          ax_mp | 
          y + 2 = suc (suc y)  | 
        
        
          | 71 | 
          62, 70 | 
          ax_mp | 
          (y + 2) * suc y = suc (suc y) * suc y  | 
        
        
          | 72 | 
          71 | 
          a1i | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (y + 2) * suc y = suc (suc y) * suc y  | 
        
        
          | 73 | 
          61, 72 | 
          syl5eqr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> y * suc y + 2 * suc y = suc (suc y) * suc y  | 
        
        
          | 74 | 
          60, 73 | 
          eqtrd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> 2 * ((x + y) * suc (x + y) // 2) + 2 * suc y = suc (suc y) * suc y  | 
        
        
          | 75 | 
          48, 74 | 
          syl6eqr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> 2 * ((x + y) * suc (x + y) // 2) + 2 * suc y = 2 * (suc y * suc (suc y) // 2)  | 
        
        
          | 76 | 
          41, 75 | 
          syl5eq | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> 2 * ((x + y) * suc (x + y) // 2 + suc y) = 2 * (suc y * suc (suc y) // 2)  | 
        
        
          | 77 | 
          40, 76 | 
          sylib | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (x + y) * suc (x + y) // 2 + suc y = suc y * suc (suc y) // 2  | 
        
        
          | 78 | 
           | 
          add0 | 
          suc y * suc (suc y) // 2 + 0 = suc y * suc (suc y) // 2  | 
        
        
          | 79 | 
           | 
          add0 | 
          suc y + 0 = suc y  | 
        
        
          | 80 | 
           | 
          anlr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> m = suc y  | 
        
        
          | 81 | 
           | 
          anr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> n = 0  | 
        
        
          | 82 | 
          80, 81 | 
          addeqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> m + n = suc y + 0  | 
        
        
          | 83 | 
          79, 82 | 
          syl6eq | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> m + n = suc y  | 
        
        
          | 84 | 
          83 | 
          suceqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> suc (m + n) = suc (suc y)  | 
        
        
          | 85 | 
          83, 84 | 
          muleqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (m + n) * suc (m + n) = suc y * suc (suc y)  | 
        
        
          | 86 | 
          85 | 
          diveq1d | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (m + n) * suc (m + n) // 2 = suc y * suc (suc y) // 2  | 
        
        
          | 87 | 
          86, 81 | 
          addeqd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (m + n) * suc (m + n) // 2 + n = suc y * suc (suc y) // 2 + 0  | 
        
        
          | 88 | 
          87 | 
          conv pr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> m, n = suc y * suc (suc y) // 2 + 0  | 
        
        
          | 89 | 
          78, 88 | 
          syl6eq | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> m, n = suc y * suc (suc y) // 2  | 
        
        
          | 90 | 
          77, 89 | 
          eqtr4d | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> (x + y) * suc (x + y) // 2 + suc y = m, n  | 
        
        
          | 91 | 
          37, 90 | 
          syl5eqr | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> suc (x, y) = m, n  | 
        
        
          | 92 | 
          35, 91 | 
          eqtrd | 
          a1 = x, y /\ x = 0 /\ m = suc y /\ n = 0 -> suc a1 = m, n  | 
        
        
          | 93 | 
          92 | 
          iexde | 
          a1 = x, y /\ x = 0 /\ m = suc y -> E. n suc a1 = m, n  | 
        
        
          | 94 | 
          93 | 
          iexde | 
          a1 = x, y /\ x = 0 -> E. m E. n suc a1 = m, n  | 
        
        
          | 95 | 
          94 | 
          exp | 
          a1 = x, y -> x = 0 -> E. m E. n suc a1 = m, n  | 
        
        
          | 96 | 
           | 
          exsuc | 
          x != 0 <-> E. z x = suc z  | 
        
        
          | 97 | 
          96 | 
          conv ne | 
          ~x = 0 <-> E. z x = suc z  | 
        
        
          | 98 | 
           | 
          suceq | 
          a1 = x, y -> suc a1 = suc (x, y)  | 
        
        
          | 99 | 
          98 | 
          anw3l | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> suc a1 = suc (x, y)  | 
        
        
          | 100 | 
           | 
          addSass | 
          suc z + y = z + suc y  | 
        
        
          | 101 | 
           | 
          addeq1 | 
          x = suc z -> x + y = suc z + y  | 
        
        
          | 102 | 
          101 | 
          anwr | 
          a1 = x, y /\ x = suc z -> x + y = suc z + y  | 
        
        
          | 103 | 
          102 | 
          anwll | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> x + y = suc z + y  | 
        
        
          | 104 | 
          100, 103 | 
          syl6eq | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> x + y = z + suc y  | 
        
        
          | 105 | 
           | 
          anlr | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> m = z  | 
        
        
          | 106 | 
           | 
          anr | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> n = suc y  | 
        
        
          | 107 | 
          105, 106 | 
          addeqd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> m + n = z + suc y  | 
        
        
          | 108 | 
          104, 107 | 
          eqtr4d | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> x + y = m + n  | 
        
        
          | 109 | 
          108 | 
          suceqd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> suc (x + y) = suc (m + n)  | 
        
        
          | 110 | 
          108, 109 | 
          muleqd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> (x + y) * suc (x + y) = (m + n) * suc (m + n)  | 
        
        
          | 111 | 
          110 | 
          diveq1d | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> (x + y) * suc (x + y) // 2 = (m + n) * suc (m + n) // 2  | 
        
        
          | 112 | 
          106 | 
          eqcomd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> suc y = n  | 
        
        
          | 113 | 
          111, 112 | 
          addeqd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> (x + y) * suc (x + y) // 2 + suc y = (m + n) * suc (m + n) // 2 + n  | 
        
        
          | 114 | 
          113 | 
          conv pr | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> (x + y) * suc (x + y) // 2 + suc y = m, n  | 
        
        
          | 115 | 
          37, 114 | 
          syl5eqr | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> suc (x, y) = m, n  | 
        
        
          | 116 | 
          99, 115 | 
          eqtrd | 
          a1 = x, y /\ x = suc z /\ m = z /\ n = suc y -> suc a1 = m, n  | 
        
        
          | 117 | 
          116 | 
          iexde | 
          a1 = x, y /\ x = suc z /\ m = z -> E. n suc a1 = m, n  | 
        
        
          | 118 | 
          117 | 
          iexde | 
          a1 = x, y /\ x = suc z -> E. m E. n suc a1 = m, n  | 
        
        
          | 119 | 
          118 | 
          eexda | 
          a1 = x, y -> E. z x = suc z -> E. m E. n suc a1 = m, n  | 
        
        
          | 120 | 
          97, 119 | 
          syl5bi | 
          a1 = x, y -> ~x = 0 -> E. m E. n suc a1 = m, n  | 
        
        
          | 121 | 
          95, 120 | 
          casesd | 
          a1 = x, y -> E. m E. n suc a1 = m, n  | 
        
        
          | 122 | 
          121 | 
          eex | 
          E. y a1 = x, y -> E. m E. n suc a1 = m, n  | 
        
        
          | 123 | 
          122 | 
          eex | 
          E. x E. y a1 = x, y -> E. m E. n suc a1 = m, n  | 
        
        
          | 124 | 
          33, 123 | 
          sylib | 
          E. x E. y a1 = x, y -> E. x E. y suc a1 = x, y  | 
        
        
          | 125 | 
          5, 10, 15, 20, 27, 124 | 
          ind | 
          E. x E. y a = x, y  |