File: bug_17073.v

package info (click to toggle)
coq 9.1.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 35,964 kB
  • sloc: ml: 239,908; sh: 4,355; python: 2,985; ansic: 2,644; makefile: 874; lisp: 171; javascript: 63; xml: 24; sed: 2
file content (25 lines) | stat: -rw-r--r-- 994 bytes parent folder | download | duplicates (3)
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
Inductive vector : nat -> Type :=
  | vector_Nil : vector 0
  | vector_Cons n : vector n -> vector (S n).

Fixpoint bv_and {n} (bv1 bv2 : vector n) : vector n :=
  match bv1 with
  | vector_Nil => fun _ => vector_Nil
  | vector_Cons n1' bv1' => fun bv2 =>
    match (bv2 : vector (S n1')) in (vector n2) return
      (match n2 with 0 => Type | S n2' => (vector n2' -> vector n1') -> vector (S n1') end) with
    | vector_Nil => Type
    | vector_Cons _ bv2' => fun cast => vector_Cons _ (bv_and bv1' (cast bv2'))
    end (fun x => x)
  end bv2.

Fixpoint bv_and2 {n} (bv1 bv2 : vector n) : vector n :=
  match bv1 with
  | vector_Nil => fun _ => vector_Nil
  | vector_Cons n1' bv1' => fun bv2 =>
    match (bv2 : vector (S n1')) in (vector n2) return
      (match n2 with 0 => Type | S n2' => (vector n2' -> vector n1') -> vector (S n1') end) with
    | vector_Nil => True -> True
    | vector_Cons _ bv2' => fun cast => vector_Cons _ (bv_and2 bv1' (cast bv2'))
    end (fun x => x)
  end bv2.