hpastetwo

.

author
.
age
38 days
language
haskell
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
foo = 
fun x : nat =>
nat_ind
  (fun x0 : nat => forall y j k : nat, x0 < j -> y < k -> x0 * y < j * k)
  (fun y j : nat =>
   match j as n return (forall k : nat, 0 < n -> y < k -> 0 * y < n * k) with
   | 0 => fun (k : nat) (H : 0 < 0) (_ : y < k) => H
   | S j0 =>
       fun k : nat =>
       match k as n return (0 < S j0 -> y < n -> 0 < n + j0 * n) with
       | 0 =>
           fun (_ : 0 < S j0) (H0 : y < 0) =>
           le_plus_trans 1 0 (j0 * 0)
             (gt_le_S 0 0
                (False_ind (0 < 0)
                   (let H1 := H0 in
                    (let H2 := lt_n_O y in fun H3 : y < 0 => H2 H3) H1)))
       | S k0 =>
           fun (_ : 0 < S j0) (_ : y < S k0) =>
           le_plus_trans 1 (S k0) (j0 * S k0) (gt_le_S 0 (S k0) (lt_O_Sn k0))
       end
   end)
  (fun (x0 : nat)
     (IHx : forall y j k : nat, x0 < j -> y < k -> x0 * y < j * k)
     (y j : nat) =>
   match
     j as n return (forall k : nat, S x0 < n -> y < k -> S x0 * y < n * k)
   with
   | 0 =>
       fun (k : nat) (H : S x0 < 0) (_ : y < k) =>
       gt_le_S (y + x0 * y) 0
         (False_ind (S (y + x0 * y) <= 0)
            (let H1 := H in
             (let H2 := lt_n_O (S x0) in fun H3 : S x0 < 0 => H2 H3) H1))
   | S j0 =>
       fun (k : nat) (H : S x0 < S j0) (H0 : y < k) =>
       plus_lt_compat y k (x0 * y) (j0 * k) H0
         (IHx y j0 k (le_S_n (S x0) j0 H) H0)
   end) x
     : forall x y j k : nat, x < j -> y < k -> x * y < j * k