1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "static_2/notation/relations/ideq_2.ma".
16 include "static_2/syntax/teqg.ma".
18 (* SYNTACTIC EQUIVALENCE ON TERMS *******************************************)
20 definition teq: relation term ≝
24 "context-free syntactic equivalence (term)"
25 'IdEq T1 T2 = (teq T1 T2).
27 (* Basic properties *********************************************************)
31 /2 width=1 by teqg_refl/ qed.
35 /2 width=1 by teqg_sym/ qed-.
37 (* Basic inversion lemmas ***************************************************)
40 ∀T1,T2. T1 ≡ T2 → T1 = T2.
41 #T1 #T2 #H elim H -H //
44 (* Advanced forward lemmas **************************************************)
46 lemma teq_repl_1 (R:predicate …):
47 ∀T1. R T1 → ∀T2. T1 ≡ T2 → R T2.
49 <(teq_inv_eq … HT12) -T2 //
52 lemma teq_sym_repl_1 (R:predicate …):
53 ∀T1. R T1 → ∀T2. T2 ≡ T1 → R T2.
55 >(teq_inv_eq … HT12) -T2 //