@(transitive_le … (le_plus_minus_m_m ? q)) /2/
qed.
+theorem monotonic_lt_minus_l: ∀p,q,n. n ≤ q → q < p → q - n < p - n.
+#p #q #n #H1 #H2
+@lt_plus_to_minus_r <plus_minus_m_m //
+qed.
+
theorem eq_minus_O: ∀n,m:nat.
n ≤ m → n-m = O.
#n #m #lenm @(le_n_O_elim (n-m)) /2/
include "basics/logic.ma".
+(********** preducates *********)
+
+definition predicate: Type[0] → Type[0]
+≝ λA.A→Prop.
+
(********** relations **********)
definition relation : Type[0] → Type[0]
≝ λA.A→A→Prop.
#H #Hind % #c #Rcb @Hind @subRS //
qed.
+(* added from lambda_delta *)
+
+lemma TC_strap: ∀A. ∀R:relation A. ∀a1,a,a2.
+ R a1 a → TC … R a a2 → TC … R a1 a2.
+/3 width=3/ qed.
+
+lemma TC_reflexive: ∀A,R. reflexive A R → reflexive A (TC … R).
+/2 width=1/ qed.
+
+lemma TC_star_ind: ∀A,R. reflexive A R → ∀a1. ∀P:predicate A.
+ P a1 → (∀a,a2. TC … R a1 a → R a a2 → P a → P a2) →
+ ∀a2. TC … R a1 a2 → P a2.
+#A #R #H #a1 #P #Ha1 #IHa1 #a2 #Ha12 elim Ha12 -a2 /3 width=4/
+qed.