X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Flib%2Fexteq.ma;h=148cbc51232a0327b4200ed533ee107a1e62ebf1;hb=ae626612bff9c3746dd7647bbada791c737e348c;hp=d62edd8ede2d6c83f218507176b313f7f874fe64;hpb=9bdda2beaa7b0f836e3700a2e2458761e8eee06d;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma b/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma index d62edd8ed..148cbc512 100644 --- a/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma +++ b/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma @@ -15,15 +15,16 @@ include "ground/notation/relations/doteq_4.ma". include "ground/lib/relations.ma". -(* EXTENSIONAL EQUIVALENCE **************************************************) +(* EXTENSIONAL EQUIVALENCE FOR FUNCTIONS ************************************) definition exteq (A,B:Type[0]): relation (A → B) ≝ - λf1,f2. ∀a. f1 a = f2 a. + λf1,f2. ∀a. f1 a = f2 a. -interpretation "extensional equivalence" - 'DotEq A B f1 f2 = (exteq A B f1 f2). +interpretation + "extensional equivalence" + 'DotEq A B f1 f2 = (exteq A B f1 f2). -(* Basic_properties *********************************************************) +(* Basic constructions ******************************************************) lemma exteq_refl (A) (B): reflexive … (exteq A B). // qed. @@ -36,3 +37,37 @@ lemma exteq_sym (A) (B): symmetric … (exteq A B). lemma exteq_trans (A) (B): Transitive … (exteq A B). /2 width=1 by exteq_repl/ qed-. + +lemma exteq_canc_sn (A) (B): left_cancellable … (exteq A B). +/2 width=1 by exteq_repl/ qed-. + +lemma exteq_canc_dx (A) (B): right_cancellable … (exteq A B). +/2 width=1 by exteq_repl/ qed-. + +(* Constructions with compose ***********************************************) + +lemma compose_repl_fwd_dx (A) (B) (C) (g) (f1) (f2): + f1 ≐{A,B} f2 → g ∘ f1 ≐{A,C} g ∘ f2. +#A #B #C #g #f1 #f2 #Hf12 #a +whd in ⊢ (??%%); // +qed. + +lemma compose_repl_bak_dx (A) (B) (C) (g) (f1) (f2): + f1 ≐{A,B} f2 → g ∘ f2 ≐{A,C} g ∘ f1. +/3 width=1 by compose_repl_fwd_dx, exteq_sym/ +qed. + +lemma compose_repl_fwd_sn (A) (B) (C) (g1) (g2) (f): + g1 ≐{B,C} g2 → g1 ∘ f ≐{A,C} g2 ∘ f. +#A #B #C #g1 #g2 #f #Hg12 #a +whd in ⊢ (??%%); // +qed. + +lemma compose_repl_bak_sn (A) (B) (C) (g1) (g2) (f): + g1 ≐{B,C} g2 → g2 ∘ f ≐{A,C} g1 ∘ f. +/3 width=1 by compose_repl_fwd_sn, exteq_sym/ +qed. + +lemma compose_assoc (A1) (A2) (A3) (A4) (f3:A3→A4) (f2:A2→A3) (f1:A1→A2): + f3 ∘ (f2 ∘ f1) ≐ f3 ∘ f2 ∘ f1. +// qed.