axiom a: A.
axiom b: B.
-include "logic/connectives.ma".
+definition xxx ≝ A.
notation "#" non associative with precedence 90 for @{ 'sharp }.
interpretation "a" 'sharp = a.
-interpretation "b" 'sharp = b.
+interpretation "b" 'sharp = b.
-ntheorem prova : ((A ∧ A → B) → (A → B) → C) → C.
-# H;
-napply (H ? ?) [#L | *w; #K1; #K2]
+definition k : A → A ≝ λx.a.
+definition k1 : A → A ≝ λx.a.
+
+axiom P : A → Prop.
+
+include "nat/plus.ma".
+
+ntheorem pappo : ∀n:nat.n = S n + n → S n = (S (S n)).
+#m; #H; napply (let pippo ≝ (S m) in ?);
+nchange in match (S m) in ⊢ (?) with pippo;
+
+nletin pippo ≝ (S m) in H ⊢ (?);
+
+nwhd in H:(???%);
+nchange in match (S ?) in H:% ⊢ (? → %) with (pred (S ?));
+ntaint;
+
+ngeneralize in match m in ⊢ %; in ⊢ (???% → ??%?);
+STOP
+ncases (O) in m : % (*H : (??%?)*) ⊢ (???%);
+nelim (S m) in H : (??%?) ⊢ (???%);
+STOP;
+
+ntheorem pippo : ∀x:A. P (k x).
+nchange in match (k x) in ⊢ (∀_.%) with (k1 x); STOP
+
+ntheorem prova : (A → A → C) → C.
+napply (λH.?);
+napply (H ? ?); nchange A xxx;
napply #.
nqed.
\ No newline at end of file