]> matita.cs.unibo.it Git - helm.git/commitdiff
- a couple of new entities
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 24 Feb 2010 20:04:39 +0000 (20:04 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 24 Feb 2010 20:04:39 +0000 (20:04 +0000)
helm/software/lambda-delta/examples/exp_math/L.hln
helm/software/lambda-delta/examples/exp_math/T0.hln

index 55b96e6c9c101add79f483f38b3eafc5d41e75de..4b84f65fd8fa0bd88b22e2ca48e7df2229b46f9a 100644 (file)
@@ -2,7 +2,7 @@
 
 \* Intuitionistic Predicate Logic with Equality *\
 
-\open elements \* [1] 2.1. 2.2. *\
+\open elements \* [1] 2.1. 2.2. 3.1 *\
 
    \decl "logical false" False: *Prop
 
index aab161e0e1ffd7b42e478e713a9524efd5ec2cd5..8321246c649a413a74e7a8401b24c7c8c39a611a 100644 (file)
 
 \close
 
-\open non_logical_abbreviations \* [1] 2.4. *\
+\open non_logical_abbreviations \* [1] 2.4. 2.7 *\
+
+   \def "object application"
+      OAt = [f:*Obj, x:*Obj] At(T(f), T(x)) : *Obj => *Obj -> *Term
 
    \def "convergence of a term to an object"
       Conv = [t:*Term] EX([y:*Obj] E(t, y)) : *Term -> *Prop
       Eq = [t1:*Term, t2:*Term] [y:*Obj] Iff(E(t1, y), E(t2, y))
          : *Term => *Term -> *Prop
 
+   \def "classification membership of a term"
+      TEta = [t:*Term, a:*Obj] EEx(a, [y:*Obj] E(t, y))
+           : *Term => *Obj -> *Prop
+
+   \def "operation (rule with inhabited domain)"
+      Op = [f:*Obj] Ex([x:*Obj] Conv(OAt(f, x))) : *Obj -> *Prop
+
+   \def "classification inclusion"
+      ESub = [a1:*Obj, a2:*Obj] EAll(a1, [x:*Obj] Eta(x, a2))
+           : *Obj => *Obj -> *Prop
+
+    \def "classification morphism"
+      ETo = [f:*Obj, a:*Obj, b:*Obj] EAll(a, [x:*Obj] TEta(OAt(f, x), b))
+          : *Obj => *Obj => *Obj -> *Prop
+
 \close
 
-\open non_logical_axioms \* [1] 2.4. *\
+\open non_logical_axioms \* [1] 2.4. 3.2 *\
 
 \* we axiomatize E because *Term is not inductively generated *\
    \ax e_refl: [y:*Obj] E(T(y), y)
-\*
-   \ax e_at_in: [f:*Obj][x:*Obj][y:*Obj] App(f,x,y) -> E(At(T(f), T(x)), y) 
 
+   \ax e_at_in: [t1:*Term][t2:*Term][f:*Obj][x:*Obj][y:*Obj] 
+                E(t1, f) -> E(t2, x) -> App(f, x, y) -> E(At(t1, t2), y) 
+\*
    \ax e_at_out: [f:*Obj][x:*Obj][y:*Obj] E(At(T(f), T(x)), y) -> App(f,x,y) 
 *\
+   \ax "I (i)" id_dec: [x:*Obj][y:*Obj] Or(Id(x, y), NId(x, y))
+   
+   \ax "I (ii)" at_mono: [f:*Obj][x:*Obj][y1:*Obj][y2:*Obj]
+                         E(OAt(f, x), y1) -> E(OAt(f, x), y2) -> Id(y1, y2)
+
+   \ax "I (iii)" eta_cl: [x:*Obj][a:*Obj] Eta(x, a) -> Cl(a)
+
 \close