| Step | Hyp | Ref | Expression | 
        
          | 1 | 
           | 
          dvd02 | 
          bgcd a b || 0  | 
        
        
          | 2 | 
           | 
          dvdeq2 | 
          b = 0 -> (bgcd a b || b <-> bgcd a b || 0)  | 
        
        
          | 3 | 
          1, 2 | 
          mpbiri | 
          b = 0 -> bgcd a b || b  | 
        
        
          | 4 | 
          3 | 
          anwr | 
          a != 0 /\ b = 0 -> bgcd a b || b  | 
        
        
          | 5 | 
           | 
          bgcdbezout | 
          E. x E. y x * a = y * b + bgcd a b  | 
        
        
          | 6 | 
           | 
          modeq0 | 
          b % bgcd a b = 0 <-> bgcd a b || b  | 
        
        
          | 7 | 
           | 
          modlt | 
          bgcd a b != 0 -> b % bgcd a b < bgcd a b  | 
        
        
          | 8 | 
           | 
          lt01 | 
          0 < bgcd a b <-> bgcd a b != 0  | 
        
        
          | 9 | 
           | 
          bgcdpos | 
          a != 0 -> 0 < bgcd a b  | 
        
        
          | 10 | 
          8, 9 | 
          sylib | 
          a != 0 -> bgcd a b != 0  | 
        
        
          | 11 | 
          7, 10 | 
          syl | 
          a != 0 -> b % bgcd a b < bgcd a b  | 
        
        
          | 12 | 
          11 | 
          anwll | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> b % bgcd a b < bgcd a b  | 
        
        
          | 13 | 
           | 
          ltnle | 
          b % bgcd a b < bgcd a b <-> ~bgcd a b <= b % bgcd a b  | 
        
        
          | 14 | 
           | 
          lt01 | 
          0 < b % bgcd a b <-> b % bgcd a b != 0  | 
        
        
          | 15 | 
           | 
          anr | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> ~b % bgcd a b = 0  | 
        
        
          | 16 | 
          15 | 
          conv ne | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> b % bgcd a b != 0  | 
        
        
          | 17 | 
          14, 16 | 
          sylibr | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> 0 < b % bgcd a b  | 
        
        
          | 18 | 
           | 
          an3l | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> a != 0  | 
        
        
          | 19 | 
           | 
          anlr | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> x * a = y * b + bgcd a b  | 
        
        
          | 20 | 
           | 
          anllr | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> ~b = 0  | 
        
        
          | 21 | 
          20 | 
          conv ne | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> b != 0  | 
        
        
          | 22 | 
           | 
          divmod | 
          bgcd a b * (b // bgcd a b) + b % bgcd a b = b  | 
        
        
          | 23 | 
          22 | 
          a1i | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> bgcd a b * (b // bgcd a b) + b % bgcd a b = b  | 
        
        
          | 24 | 
           | 
          lemax1 | 
          x * (b // bgcd a b) <= max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b)))  | 
        
        
          | 25 | 
          24 | 
          a1i | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> x * (b // bgcd a b) <= max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b)))  | 
        
        
          | 26 | 
           | 
          lemax2 | 
          suc (y * (b // bgcd a b)) <= max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b)))  | 
        
        
          | 27 | 
          26 | 
          conv lt | 
          y * (b // bgcd a b) < max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b)))  | 
        
        
          | 28 | 
          27 | 
          a1i | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> y * (b // bgcd a b) < max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b)))  | 
        
        
          | 29 | 
          18, 19, 21, 23, 25, 28 | 
          bgcddvd2lem | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 ->
  (max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b))) * b - x * (b // bgcd a b)) * a =
    (max (x * (b // bgcd a b)) (suc (y * (b // bgcd a b))) * a - suc (y * (b // bgcd a b))) * b + b % bgcd a b | 
        
        
          | 30 | 
          17, 29 | 
          bgcdled | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b /\ ~b % bgcd a b = 0 -> bgcd a b <= b % bgcd a b  | 
        
        
          | 31 | 
          30 | 
          exp | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> ~b % bgcd a b = 0 -> bgcd a b <= b % bgcd a b  | 
        
        
          | 32 | 
          31 | 
          con1d | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> ~bgcd a b <= b % bgcd a b -> b % bgcd a b = 0  | 
        
        
          | 33 | 
          13, 32 | 
          syl5bi | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> b % bgcd a b < bgcd a b -> b % bgcd a b = 0  | 
        
        
          | 34 | 
          12, 33 | 
          mpd | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> b % bgcd a b = 0  | 
        
        
          | 35 | 
          6, 34 | 
          sylib | 
          a != 0 /\ ~b = 0 /\ x * a = y * b + bgcd a b -> bgcd a b || b  | 
        
        
          | 36 | 
          35 | 
          eexda | 
          a != 0 /\ ~b = 0 -> E. y x * a = y * b + bgcd a b -> bgcd a b || b  | 
        
        
          | 37 | 
          36 | 
          eexd | 
          a != 0 /\ ~b = 0 -> E. x E. y x * a = y * b + bgcd a b -> bgcd a b || b  | 
        
        
          | 38 | 
          5, 37 | 
          mpi | 
          a != 0 /\ ~b = 0 -> bgcd a b || b  | 
        
        
          | 39 | 
          4, 38 | 
          casesda | 
          a != 0 -> bgcd a b || b  |