]> matita.cs.unibo.it Git - helm.git/commitdiff
csc trick on steroids
authorEnrico Tassi <enrico.tassi@inria.fr>
Wed, 28 Jun 2006 09:02:56 +0000 (09:02 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Wed, 28 Jun 2006 09:02:56 +0000 (09:02 +0000)
helm/software/matita/library/paramodulation/paramodulation.ma [new file with mode: 0644]

diff --git a/helm/software/matita/library/paramodulation/paramodulation.ma b/helm/software/matita/library/paramodulation/paramodulation.ma
new file mode 100644 (file)
index 0000000..aaaf363
--- /dev/null
@@ -0,0 +1,52 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+set "baseuri" "cic:/matita/paramodulation/".
+
+include "nat/nat.ma".
+
+definition make_eqs_smart \def 
+  \lambda Univ:Type.
+  \lambda length:nat.
+  \lambda initial:Univ.
+  let rec aux (p:Univ) (n:nat) on n : Prop \def
+    match n with
+    [ O \Rightarrow \forall a:Univ. p = a \to initial = a   
+    | (S n) \Rightarrow \forall a:Univ. p = a \to aux a n
+    ]
+  in 
+    aux initial length.
+  
+theorem transl_smart : 
+  \forall Univ:Type.\forall n:nat.\forall initial:Univ.
+    make_eqs_smart Univ n initial.
+  intros.
+  unfold make_eqs_smart.
+  elim n
+  [ simplify.intros.assumption
+  | simplify.intros.rewrite < H1.assumption
+  ]
+qed.  
+
+theorem prova:
+  \forall Univ:Type.
+  \forall a,b:Univ.
+  \forall plus: Univ \to Univ \to Univ.
+  \forall H:\forall x,y:Univ.plus x y = plus y x.
+  \forall H1:plus b a = plus b b.
+  plus a b = plus b b.
+  intros.
+  apply (transl_smart ? (S O) ? ? (H a b) ? H1).
+qed. 
+