]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/contribs/LAMBDA-TYPES/Level-1/problems.ma
Foo is the problematic elimination principle.
[helm.git] / matita / contribs / LAMBDA-TYPES / Level-1 / problems.ma
index 5bf584dfd358990d62b80364c84dfa04c2bc4105..bc0d10feecb93659b24c5bd2e5f28ec846d00d79 100644 (file)
 (**************************************************************************)
 
 (* Problematic objects for disambiguation/typechecking ********************)
-(* FG: PLEASE COMMENT THE NON WORKING OBJECTS *****************************)
 
 set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/problems".
 
-include "legacy/coq.ma".
+include "LambdaDelta/theory.ma".
 
-(*
+(* Problem 1: disambiguation errors with these objects *)
 
-(* Problem 1: disambiguation/typechecking of may objects very slow *)
+(*  leq_trans (in problems-4)
+ *)
 
 (* Problem 2: assertion failure raised by type checker on this object *)
 
-tau1
-
-*)
+definition foo ≝
+\lambda g:G.\lambda c:C.\lambda t:T.
+\lambda P:T\to Prop.
+\lambda H:\forall t1:T.\forall H:tau0 g c t t1.P t1.
+\lambda H1:
+ \forall t1:T.\forall H1:tau1 g c t t1.
+  P t1 \to \forall t2:T.\forall H2:tau0 g c t1 t2.P t2.
+ let rec f (t1:T) (H2:tau1 g c t t1) on H2 ≝
+  match H2 return \lambda t2:T.\lambda H3:tau1 g c t t2.P t2 with
+  [ tau1_tau0 => \lambda t2:T.\lambda H3:(tau0 g c t t2).H t2 H3
+  | tau1_sing =>
+     \lambda t2:T.\lambda H3:(tau1 g c t t2).\lambda t3:T.
+      \lambda H4:tau0 g c t2 t3.H1 t2 H3 (f t2 H3) t3 H4
+  ]
+ in f.
+
+
+inductive tau1 (g:G) (c:C) (t1:T): T \to Prop \def
+| tau1_tau0: \forall (t2: T).((tau0 g c t1 t2) \to (tau1 g c t1 t2))
+| tau1_sing: \forall (t: T).((tau1 g c t1 t) \to (\forall (t2: T).((tau0 g c 
+t t2) \to (tau1 g c t1 t2))))).