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 "basic_2/notation/relations/simple_1.ma".
16 include "basic_2/grammar/term.ma".
18 (* SIMPLE (NEUTRAL) TERMS ***************************************************)
20 inductive simple: predicate term ≝
21 | simple_atom: ∀I. simple (⓪{I})
22 | simple_flat: ∀I,V,T. simple (ⓕ{I} V. T)
25 interpretation "simple (term)" 'Simple T = (simple T).
27 (* Basic inversion lemmas ***************************************************)
29 fact simple_inv_bind_aux: ∀T. 𝐒⦃T⦄ → ∀a,J,W,U. T = ⓑ{a,J} W. U → ⊥.
31 [ #I #a #J #W #U #H destruct
32 | #I #V #T #a #J #W #U #H destruct
36 lemma simple_inv_bind: ∀a,I,V,T. 𝐒⦃ⓑ{a,I} V. T⦄ → ⊥.
39 lemma simple_inv_pair: ∀I,V,T. 𝐒⦃②{I}V.T⦄ → ∃J. I = Flat2 J.
40 * /2 width=2/ #a #I #V #T #H
41 elim (simple_inv_bind … H)