+++ /dev/null
-let rec fact =
- \lambda x:nat.
- [\lambda x:nat. nat]
- match x:nat with
- [ O \Rightarrow 1
- | (S (x: nat)) \Rightarrow (mult (S x) (fact x)) ]
-in
-(fact 4)
-###### INTERPRETATION NUMBER 1 ######
-### (* disambiguation environment *)
-alias id S = cic:/Coq/Init/Datatypes/nat.ind#1/1/2
-alias id mult = cic:/Coq/Init/Peano/mult.con
-alias id nat = cic:/Coq/Init/Datatypes/nat.ind#1/1
-alias num (instance 0) = "natural number"
-### (* METASENV after disambiguation *)
-
-### (* TERM after disambiguation *)
-[fact:=
-Fix fact {
-fact / 0 : (nat->nat) :=
-[x:nat]
-<[x:nat]nat>Cases x of
- O => (S O)
- S => [x:nat](mult (S x) (fact x))
-end}
-](fact (S (S (S (S O)))))
-### (* TYPE_OF the disambiguated term *)
-nat
-### (* REDUCED disambiguated term *)
-(S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) O)))))) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) O)))))) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) O)))))) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- (S (
-Fix plus {
-plus / 0 : (n:nat)(m:nat)nat :=
-[n:nat][m:nat]
-<[n0:nat]nat>Cases n of
- O => m
- S => [p:nat](S (plus p m))
-end}
- O O)) O)))))) O))))))))